PHP, проблема обрезки ведущих нулей

Итак, вот проблема: я получаю шестнадцатеричный номер из входного поля, он может выглядеть примерно так: FFFF, 000CA3, бла-бла-бла, в то время как обрезать их легко просто с помощью $var = ltrim('0',$var);

Моя проблема заключается в том, что когда пользователь вводит «0000», он обрезает всю строку до нуля. Я мог бы, конечно, сделать оператор if для этого после того, как строка проверки результата обрезки станет нулевой, и добавить 0, если это так. но есть ли какой-нибудь другой изящный трюк, который может решить это, как в одном утверждении? Заранее большое спасибо.


person tg9413    schedule 30.06.2011    source источник


Ответы (1)


Вот один из них, о котором я могу думать:

$var = dechex(hexdec($var));

hexdec() преобразует строки в фактические числовые значения, поэтому любые незначащие нули просто не важны. . dechex() преобразует их обратно в строки после удаления нулей.

Если по какой-то странной причине вам требуются шестнадцатеричные цифры A-F в верхнем регистре, просто добавьте вызов strtoupper(), так как dechex() производит шестнадцатеричные цифры в нижнем регистре:

$var = strtoupper(dechex(hexdec($var)));
person BoltClock    schedule 30.06.2011