PHP: Простой, Проверьте, если строка является шестнадцатеричным числом?

У меня нет подсказки, как проверить эту строку. Я просто предоставляю IV для шифрования, но могу найти № 1is_hex () 1 или подобная функция, я не могу перенести голову вокруг этого! Я считал на комментарии в php документации (пользователь contrib. примечания) это:

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

Но это, кажется, не работает вообще.. Это только говорит ложь. Если бы помогает, что мой вход моего IV был бы этим:

92bff433cc639a6d
26
задан JakeGould 7 May 2015 в 04:22
поделиться

3 ответа

Использовать функцию: 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 состоит из всех шестнадцатеричных цифр.
55
ответ дан 28 November 2019 в 06:36
поделиться

Ваш ввод слишком велик. Из руководства PHP dexhex

. Наибольшее число, которое может быть преобразовано, равно 4294967295 в десятичное , что приводит к "ffffffff"

. Так что вам будет лучше использовать RegEx, в котором уже есть были предоставлены здесь другими.

1
ответ дан 28 November 2019 в 06:36
поделиться

Есть ли причина не сравнивать с простым RE вроде "[0-9A-Fa-f] +"? (отредактируйте: возможно, с '^' в начале и '$' в конце, чтобы убедиться, что вы сопоставили всю строку).

3
ответ дан 28 November 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: