preg_replace使匹配的十六进制值显示为文本

时间:2014-03-24 12:41:03

标签: php regex preg-replace

如何使用preg_replace将匹配的十六进制值转换为十六进制的文本表示形式?

$string = 'abcd'.hex2bin(23).'abc'.hex2bin(24);

例如str_replace('/[\x20-\x25]/', 'what here?', $string)会得到如下输出:

abcd[HEX:23]abc[HEX:24]

我到底想做什么:我正在寻找隐藏的角色,并希望显示其十六进制值。

1 个答案:

答案 0 :(得分:1)

您需要preg_replace_callback()之类的内容来对所有匹配进行回调。

尝试:

$string = 'abcd'.hex2bin(23).'abc'.hex2bin(24);

$text = preg_replace_callback('/[\\x20-\\x25]/', function($matches) {
    $string = bin2hex($matches[0]);
    return "[HEX:{$string}]";
}, $string);