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

📘 Naucz się w lekcji →