我想用下面的代码实现的事情:匹配指定的单词不区分大小写,并且在文本中只匹配一次,然后用链接替换它。
我有以下 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 匹配的内容(标题和名称部分的问题相同)。
如何更改模式以仅匹配 HTML 语句之外的“foo”?