Введение в Ctype функции

Ctype расширение предоставляет целый набор функций для проверки того, что символы строки относятся к корректному типу. Это расширение доступно по умолчанию начиная с PHP 4.2 и выше.

Если вы когда-либо программировали на C, то вы возможно знакомы с функциями определения типа символов. Если нет, то самое время познакомиться с их реализацией в PHP.

Как это работает?

На самом деле, все просто. Как уже было замечено ранее, функции проверяют значение строки, чтобы удостовериться, что каждый символ принадлежит заданному диапазону возможных значений. Например, вы можете использовать эту функции, чтобы проверить, что строка состоит только из символов в верхнем регистре, или, что строка содержит только числа, или, что она состоит из шестнадцатеричных символов и так далее.

Но тут нужно быть уверенным, что мы передаем в функцию именно строку. Конечно, можно передать и целое число, к примеру, но тогда вы рискуете получить непредсказуемый результат. Любые целочисленные данные будут интерпретированы как ASCII коды соответствующих символов. При этом в диапазоне от -128 до 255 это будет один символ, а любое другое число будет разбито на цифры и переведено в символы.

Поведение будет ясно из примера:

Если поглядеть внимательно, то станет понятно, что первая строка пройдет проверку именно в том виде, в каком она есть. А вот вторая строка проверку на числовые данные не пройдет, т.к. код 42 в ASCII таблице – это код символа *.

Конечно, здесь можно проверить содержимое переменных иначе. Например, с помощью is_numeric. Но все зависит от ваших нужд, т.к. в случае с is_numeric результат будет совершенно другой. Данная функция не заботиться о реальном типе переменной а проверяет наличие чисел “как они есть”, поэтому результат в коде выше будет у обеих переменных положительный. Об этой особенности нужно помнить

Какие функции доступны?

Какие именно проверки можно осуществлять с помощью них?

ctype_alnum() – проверяет на наличие алфавитноцифровых символов (без пробелов и пунктуации).

ctype_alpha() – проверяет на наличие алфавитных символов.

ctype_cntrl() – проверяет на наличие управляющих символов (например, \n и прочие).

ctype_digit() – проверят на наличие цифровых символов (без десятичной точки или запятой).

ctype_graph() – проверяет на наличие визуализированных  символов (т.е. кроме пробелов и управляющих символов).

ctype_lower() – проверят на наличие символов в нижнем регистре (только алфавитный диапазон).

ctype_print() – проверят на наличие печатных символов, включая пробелы и управляющие символы.

ctype_punct() – проверяет на наличие символов пунктуации и прочих спецсимволов (без алфавитноцифровых и пробельных символов).

ctype_space() – проверяет на наличие пробельных символов (пробел, а также любые управляющие символы, оставляющие пробел).

ctype_upper() – проверяет на наличие символов в верхнем регистре (только алфавитный диапазон).

ctype_xdigit() – проверят на наличие шестнадцатеричных символов.

Как их использовать?

Все довольно просто. Как и любые функции с булевой логикой, они часто используются в условных конструкциях. Если функция возвращает true, то значит все символы строки прошли проверку типа и удовлетворяют налагаемому условия. Если false, то хотя бы один символ не удовлетворяет данному типу.

Если значение $stringAzxc1234“, то мы увидим на экране “This string totally works“. Если же ее значение, к примеру, “123#Axy“, то мы увидим уже второе сообщение “And this one not so much“.

Стоит обратить внимание, что если мы передадим пустую строку, то в PHP 5.1 и выше получим false. В остальных же версиях PHP получим true, что, кстати, странно.

 

Источник

 

1 комментарий Введение в Ctype функции

  1. Наташа

    Огромное спасибо за статью. Решила проблему. Понятно и коротко!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">