preg_replace没有替换Wordpress插件

时间:2010-08-09 18:53:29

标签: regex preg-replace wordpress-plugin

在我之前的question的后续工作中,我想用以下格式的链接替换ALL-CAPS * 字的每个实例:

dictionary.com/browse/<TERM>

我正在使用的preg_replace电话是:

$content = preg_replace('#[A-Z][A-Z]+#', '<a href="//dictionary.com/browse/$1">$1</a>', $content);

使用http://gskinner.com/RegExr,看来我的正则表达式是正确的,并且替换每个查找。

我是否在preg_replace调用中做错了,或者在插件/过滤器注册到Wordpress API时出现了错误?


通话的完整背景:

function define_filter($content){
  $content = preg_replace('#[A-Z][A-Z]+#', '<a href="//dictionary.com/browse/$1">$1</a>', $content);
}

add_filter('the_content', 'define_filter');

*我使用[A-Z][A-Z]+语法确保我不匹配“I”和“A”等词语

1 个答案:

答案 0 :(得分:1)

我相信函数需要返回替换结果:

return $content;

此外,正则表达式看起来不正确。如果你想匹配所有大写的整个单词,那就是

'#\b[A-Z]+\b#'

此外,您需要$0(整个匹配),而不是$1(您的正则表达式没有的第一个捕获组)