The functions provided by this extension check whether a character or string falls into a certain character class according to the current locale (see also setlocale()).

When called with an integer argument these functions behave exactly like their C counterparts from ctype.h. It means that if an integer smaller than 256 is passed, it will use the ASCII value of it to see if it fits in the specified range (digits are in 0x30-0x39). If the number is between -128 and -1 inclusive then 256 will be added and the check will be done on that.


As of PHP 8.1.0, passing a non-string argument is deprecated. In the future, the argument will be interpreted as a string instead of an ASCII codepoint. Depending on the intended behavior, the argument should either be cast to string or an explicit call to chr() should be made.

When called with a string argument they will check every character in the string and will only return true if every character in the string matches the requested criteria. When called with an empty string the result will always be false.

Passing anything else but a string or integer will return false immediately.

It should be noted that ctype functions are always preferred over regular expressions, and even to some equivalent "str_*" and "is_*" functions. This is because of the fact that ctype uses a native C library and thus processes significantly faster.


These functions are not related to the Python "ctypes" library at all. The extension name stems from the ctype.h C header file that their C equivalents are defined in.

This extension also predates Python "ctypes" so any confusion caused by this naming is hardly PHP's fault.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top