ctype_punct
funkcja
Sprawdza, czy wszystkie znaki w ciągu to znaki interpunkcyjne (drukowalne, niebędące alfanumerycznymi ani spacją).
ctype_punct(mixed $text): bool
ctype_punct zwraca true, gdy każdy znak podanego ciągu należy do klasy interpunkcji ASCII — czyli jest drukowalny, ale nie jest ani literą, ani cyfrą, ani spacją. Obejmuje to m.in. ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ { | } ~. Pusta wartość zwraca false`. Przydaje się do sprawdzenia, czy pole zawiera wyłącznie znaki specjalne — np. separator, maskę lub pin złożony z symboli.
<?php
declare(strict_types=1);
$separator = '---';
if (!ctype_punct($separator)) {
throw new \InvalidArgumentException('Separator musi zawierać wyłącznie znaki interpunkcyjne.');
}
// Bezpiecznie: $separator zawiera same znaki specjalne ASCII
echo "Używam separatora: {$separator}";
// Używam separatora: ---
Pułapka z liczbami całkowitymi. Przed PHP 8.1 przekazanie
intw zakresie -128..255 było interpretowane jako kod ASCII — np.ctype_punct(33)sprawdzało znak'!'(kod 33) i zwracałotrue. Od PHP 8.1 takie wywołanie generujeE_DEPRECATED. Zawsze przekazuj ciąg znaków, np.ctype_punct((string) $zmienna).