ctype_cntrl
funkcja
Sprawdza, czy wszystkie znaki w ciągu to znaki sterujące ASCII (kody 0–31 oraz 127). Pusta wartość zwraca false.
ctype_cntrl(mixed $text): bool
ctype_cntrl zwraca true, gdy każdy znak podanego ciągu to znak sterujący ASCII — czyli o kodzie 0–31 (np. \x00 null, \x09 tabulator, \x0a nowa linia, \x0d powrót karetki) lub 127 (DEL). Pusta wartość zwraca false. Funkcja przydaje się do wykrywania lub blokowania znaków sterujących w danych wejściowych, np. przy walidacji nagłówków HTTP czy pól tekstowych, gdzie takie znaki są niedozwolone.
<?php
declare(strict_types=1);
$naglowek = "Wartość\x00z-nullem";
// Sprawdź, czy ciąg NIE zawiera żadnych znaków sterujących
$sameSterujace = array_filter(
str_split($naglowek),
fn(string $znak) => ctype_cntrl($znak)
);
if ($sameSterujace !== []) {
throw new \RuntimeException('Nagłówek zawiera niedozwolone znaki sterujące.');
}
// Rzuca wyjątek — w ciągu jest \x00
Pułapka z liczbami całkowitymi. Przed PHP 8.1 przekazanie
intw zakresie -128..255 było interpretowane jako kod ASCII — np.ctype_cntrl(10)sprawdzało znak o kodzie 10 (\n) i zwracałotrue. Od PHP 8.1 takie wywołanie generujeE_DEPRECATED. Zawsze przekazuj ciąg znaków, np.ctype_cntrl((string) $zmienna).