我不知道如何验证这个字符串。我只是提供一个加密的IV,但是找不到1is_hex()1或类似的功能,我无法绕过它!我在php文档(用户贡献,注释)中阅读了一条评论:
if($iv == dechex(hexdec($iv))) {
//True
} else {
//False
}
但这似乎根本不起作用......它只是说错了。 如果它有助于我输入我的IV:
92bff433cc639a6d
答案 0 :(得分:54)
使用功能: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";
}
}
?>
以上示例将输出:
AB10BC99
由所有十六进制数字组成。AR1012
不包含所有十六进制数字。ab12bc99
由所有十六进制数字组成。答案 1 :(得分:3)
有没有理由不与像“[0-9A-Fa-f] +”这样的简单RE匹配? (编辑:可能在开头是'^',在结尾有'$',以确保你匹配整个字符串。)
答案 2 :(得分:1)
答案 3 :(得分:1)
检查HEX字符串的完美方法适用于PHP 4及以上版本。
<?php
function is_hex($hex_code) {
return @preg_match("/^[a-f0-9]{2,}$/i", $hex_code) && !(strlen($hex_code) & 1);
}
?>
答案 4 :(得分:1)
没有ctype
或regex
的另一种方式:
$str = 'string to check';
if (trim($str, '0..9A..Fa..f') == '') {
// string is hexadecimal
}
答案 5 :(得分:0)
这也是可能而且非常简单
$a="affe"; //is_hex
$b="a0bg"; //is_not_hex
if(is_numeric('0x'.$a)) echo 'is_hex';
else echo 'is_not_hex';
if(is_numeric('0x'.$b)) echo 'is_hex';
else echo 'is_not_hex';
答案 6 :(得分:0)
添加不区分大小写的&#39; i&#39;标志
preg_match('/^[0-9a-f]+$/i', ...