在我之前的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”等词语
答案 0 :(得分:1)
我相信函数需要返回替换结果:
return $content;
此外,正则表达式看起来不正确。如果你想匹配所有大写的整个单词,那就是
'#\b[A-Z]+\b#'
此外,您需要$0
(整个匹配),而不是$1
(您的正则表达式没有的第一个捕获组)