preg_replace не заменяет в плагине Wordpress - PullRequest
1 голос
/ 09 августа 2010

В продолжение моего предыдущего вопроса я хочу заменить каждый экземпляр слова 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 Ответ

1 голос
/ 10 августа 2010

Я считаю, что функция должна возвращать результат замены:

return $content;

Кроме того, это регулярное выражение выглядит неправильно.Если вы хотите сопоставить целое слово во всех заглавных буквах, это

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

Кроме того, вы хотите $0 (все совпадение), а не $1 (первая группа захвата, которую не делает ваше регулярное выражение 'т)

...