То, чего я хочу достичь с помощью приведенного ниже кода: сопоставить указанное слово без учета регистра и только один раз в тексте и заменить его ссылкой.
У меня есть следующий preg_match, чтобы соответствовать слову 'foo' в строке:
if (preg_match("/\bfoo\b/i", $text, $results, PREG_OFFSET_CAPTURE)) {
// substr_replace the word 'foo' for a link <a href..
}
Нет проблем для текста без HTML, но представьте следующий текст с HTML:
Lorem ipsum dolor sit amet, <a href="/foo-bar/" title="foo bar">some other foo link</a> consectetur adipiscing elit foo bar.
В этом случае в текущей ссылке будет новая ссылка, потому что в href-part будет совпадение с foo (та же проблема для заголовка и имени).
Как можно изменить шаблон, чтобы он соответствовал только 'foo' вне оператора HTML?