带函数的preg_replace

时间:2009-11-10 19:57:45

标签: php preg-replace urlencode

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

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

我希望使用preg_replace将第一个&替换为urlencode d值。但是:

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

是的, e 修饰符和 preg_replace_callback 功能方法都可以完成这项工作。
我个人更喜欢单行决定:

  

的preg_replace( “/焦炭= \” &GT;(*)&LT;?/ A&GT; / E”,   ' “炭=” 进行urlencode( “$ 1”) “\\” &GT; $ 1" ',   $链接);