У меня нет подсказки, как проверить эту строку. Я просто предоставляю IV для шифрования, но могу найти № 1is_hex () 1 или подобная функция, я не могу перенести голову вокруг этого! Я считал на комментарии в php документации (пользователь contrib. примечания) это:
if($iv == dechex(hexdec($iv))) {
//True
} else {
//False
}
Но это, кажется, не работает вообще.. Это только говорит ложь. Если бы помогает, что мой вход моего IV был бы этим:
92bff433cc639a6d
Использовать функцию: 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
состоит из всех шестнадцатеричных цифр. Ваш ввод слишком велик. Из руководства PHP dexhex
. Наибольшее число, которое может быть преобразовано, равно 4294967295 в десятичное , что приводит к "ffffffff"
. Так что вам будет лучше использовать RegEx, в котором уже есть были предоставлены здесь другими.
Есть ли причина не сравнивать с простым RE вроде "[0-9A-Fa-f] +"? (отредактируйте: возможно, с '^' в начале и '$' в конце, чтобы убедиться, что вы сопоставили всю строку).