PHP:很简单,验证字符串是否是十六进制?

2022-08-30 14:26:49

我不知道如何验证这个字符串。我只是提供一个IV进行加密,但找不到1is_hex()1或类似功能,我无法将其包裹起来!我在php文档(用户贡献注释)中阅读了以下评论:

if($iv == dechex(hexdec($iv))) {
  //True
} else {
  //False
}

但这似乎根本行不通。它只说假的。如果它有助于我的IV输入将是这样的:

92bff433cc639a6d

答案 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";
    }
}
?> 

上面的示例将输出:

  • 该字符串由所有十六进制数字组成。AB10BC99
  • 该字符串不由所有十六进制数字组成。AR1012
  • 该字符串由所有十六进制数字组成。ab12bc99

答案 2

另一种不带或:ctyperegex

$str = 'string to check';

if (trim($str, '0..9A..Fa..f') == '') {
    // string is hexadecimal
}

推荐