2017-06-13 98 views
-3

我有一个PHP库在这里,我想通过preg_replace_callback替换preg_replace。替换preg_replace通过preg_replace_callback

这是该行:

preg_replace("/=([0-9A-F][0-9A-F])/e", 'chr(hexdec("$1"))', $l) 

,这就是我所做的:

preg_replace_callback("/=([0-9A-F][0-9A-F])/", function($m) { return chr(hexdec($m["$1"])); }, $line); 

但它并没有奏效。我仍然不明白preg_replace_callback是如何工作的。我也看了许多其他线程:(

谁能帮我请

非常感谢你提前

+0

更换'$ M [ “$ 1”]'和'$ M [1]'。 –

+0

做的你的print_r在您的回调函数中使用'$ m'数组。你会看到结构是错误的。 '$ m [“$ 1”]'应该很可能是'$ m [1]' –

回答

0

您需要使用$m[1]访问的第二个元素$m数组中:!

preg_replace_callback("/=([0-9A-F][0-9A-F])/", function($m) { return 
    chr(hexdec($m[1])); }, $line 
); 

PHP demo

+0

为什么你的答案被标记为“社区wiki”?是你做的吗?还是做了其他人?请解释一下,如果不是太麻烦。 (我刚刚阅读社区wiki上的一篇Meta帖子,但我没有看到好处。) – mickmackusa

+0

@mickmackusa:我不想为回答这样一个糟糕的问题获得积分。我正要找到一个愚蠢的问题,没有时间。 –