2

我有一些通过 PHP 运行的 HTML:

<a href="?char=">&</a>

我想用 a用它的 d 值preg_replace替换第&一个。urlencode然而:

preg_replace("/char=\">(.*?)<\/a>/", "char=".urlencode("$1")."\">$1</a>", $links);

但这给了我 value $1,而不是预期的反向引用。我该如何做我想做的事情(使输出看起来像<a href="?char=%26">&</a>)?

4

2 回答 2

3

您可以在正则表达式中使用修饰符e或使用函数preg_replace_callback(请参阅文档)。

于 2009-11-10T19:59:05.067 回答
1

是的,e修饰符和preg_replace_callback函数方法都可以完成这项工作。
我个人更喜欢单线决策:

preg_replace("/char=\">(.*?)</a>/e", '"char=".urlencode("$1")."\\">$1"', $links);

于 2009-11-10T20:23:54.697 回答