2010-08-09 14 views
1

在后续我以前question不更换,我想有以下格式的链接,以取代ALL-CAPS *字的每一个实例:的preg_replace在WordPress插件

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,看来我有我的正则表达式正确的,它应该每个鳍片被更换d。

我是否在执行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

我相信功能需要返回替换的结果:

return $content; 

此外,该正则表达式看起来不正确。如果你想整个单词全部大写匹配,这是

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

而且,你要$0(整场比赛),而不是$1(第一个捕获组,你的正则表达式没有)

+0

'\ b'的补充帮助......现在它取代了这个链接,但不会追加'$ 1'的比赛形式。任何进一步的想法都有可能? – warren 2010-08-10 01:59:43

+0

我没有注意到:你想'$ 0'(整个匹配),而不是'$ 1'(你的正则表达式没有的第一个捕获组)。 – 2010-08-10 02:26:31

+0

这就是我一直在寻找的!谢谢,艾伦 – warren 2010-08-10 02:46:53