Как преобразовать текст в \ x коды? - PullRequest
5 голосов
/ 06 сентября 2011

Я хочу преобразовать обычный текст в \ x коды, например: \ x14 \ x65 \ x60

Например:

normal text = "base64_decode"
converted \x codes for above text = "\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65"

Как это сделать?Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 06 сентября 2011

PHP 5.3 однострочный:

echo preg_replace_callback("/./", function($matched) {
    return '\x'.dechex(ord($matched[0]));
}, 'base64_decode');

Выходы \x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65

5 голосов
/ 06 сентября 2011

Функция ord() дает десятичное значение для одного байта.dechex() преобразует его в гекс.Таким образом, для этого выполните цикл по каждому символу в строке и примените обе функции.

3 голосов
/ 06 сентября 2011
$str = 'base64_decode';
$length = strlen($str);
$result = '';

for ($i = 0; $i < $length; $i++) $result .= '\\x'.str_pad(dechex(ord($str[$i])),2,'0',STR_PAD_LEFT);

print($result);
1 голос
/ 06 сентября 2011

Вот рабочий код:

function make_hexcodes($text) {
    $retval = '';
    for($i = 0; $i < strlen($text); ++$i) {
        $retval .= '\x'.dechex(ord($text[$i]));
    }

    return $retval;
}

echo make_hexcodes('base64_decode');

Посмотреть в действии .

...