PHP строка в шестнадцатеричный - PullRequest
6 голосов
/ 16 декабря 2011

У меня есть такая строка:

[0-9A-Za-z\+/=]*

Как я могу преобразовать в следующую форму:

"\133\x30\55\x39\101\x2d\132\x61\55\x7a\134\x2b\57\x3d\135\x2a"

Есть ли какая-нибудь функция для этого?

Ответы [ 2 ]

11 голосов
/ 16 декабря 2011
function strtohex($string)
{
  $string = str_split($string);
  foreach($string as &$char)
    $char = "\x".dechex(ord($char));
  return implode('',$string);
}

print strtohex("[0-9A-Za-z\+/=]*");

Приведенный выше код даст вам

\x5b\x30\x2d\x39\x41\x2d\x5a\x61\x2d\x7a\x5c\x2b\x2f\x3d\x5d\x2a

Я знаю, что это не похоже на результат, который вы ожидаете, но это вовсе не строка в гекс.

2 голосов
/ 16 декабря 2011

Если вы хотите выполнить такую ​​запутывание строк, используйте что-то вроде @Kristians подход.И вы можете переключаться между двумя методами кодирования, например:

 $char = (++$i%2) ? "\x".dechex(ord($char)) : "\\".decoct(ord($char));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...