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 int w zakresie -128..255 było interpretowane jako kod ASCII — np. ctype_punct(33) sprawdzało znak '!' (kod 33) i zwracało true. Od PHP 8.1 takie wywołanie generuje E_DEPRECATED. Zawsze przekazuj ciąg znaków, np. ctype_punct((string) $zmienna).

📘 Naucz się w lekcji →