PHP, Triming, приводящий к проблеме 0s - PullRequest
1 голос
/ 01 июля 2011

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

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

1 Ответ

5 голосов
/ 01 июля 2011

Вот один, который я могу придумать:

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

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

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

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