ctype_xdigit

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ctype_xdigit 检测字符是否只包含十六进制字符

说明

ctype_xdigit(mixed $text): bool

检查 string 类型的 text 里面的字符是不是都是十六进制字符。

参数

text

需要被测试的字符串。

注意:

如果给出一个 -128 到 255 之间(含)的int, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

警告

自 PHP 8.1.0 起,弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 码点。根据预期行为,应将参数转为字符串或显式调用 chr()

返回值

如果 text 中每个字符都是十六进制“数字”,也就是只能包含十进制数字和 [A-Fa-f] 的字符,那么就返回 true。否则返回 false。当使用空字符串调用时,结果始终为 false

示例

示例 #1 ctype_xdigit() 示例

<?php
$strings
= array('AB10BC99', 'AR1012', 'ab12bc99');
foreach (
$strings as $testcase) {
if (
ctype_xdigit($testcase)) {
echo
"The string $testcase consists of all hexadecimal digits.\n";
} else {
echo
"The string $testcase does not consist of all hexadecimal digits.\n";
}
}
?>

以上示例会输出:

The string AB10BC99 consists of all hexadecimal digits.
The string AR1012 does not consist of all hexadecimal digits.
The string ab12bc99 consists of all hexadecimal digits.

参见

add a note

User Contributed Notes 2 notes

up
21
tom at hgmail dot com
18 years ago
This function shows its usefulness on a web site where a user is asked to entered a hexidecimal color code for a color. To prevent breaking W3C standard and having them enter in "neon-green" or the wrong type of code like 355511235.

In conjunction with strlen() you could create a function like this:

function check_valid_colorhex($colorCode) {
// If user accidentally passed along the # sign, strip it off
$colorCode = ltrim($colorCode, '#');

if (
ctype_xdigit($colorCode) &&
(strlen($colorCode) == 6 || strlen($colorCode) == 3))
return true;

else return false;
}
up
-3
Anonymous
1 year ago
this can be used with great results if you wanna check for something like

"Tobias2" whether there is a number at the end of the string. (F.e. courselist with coursenames etc.)

Just substring the last char and put it in the function.
We should be glad about every possibility to cut out these damn regexes from our code. NEVER USE REGEX
To Top