PHP 8.4.2 Released!

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.

参见

添加备注

用户贡献的备注 1 note

up
22
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;
}
To Top