正则表达式替换不在标签内的subtring

时间:2019-01-19 13:56:39

标签: php regex

我想用一个单词替换字符串中的链接,并且我有以下代码:

<?php

$replacement = [
    'An example cool' => 'http://an-example-cool.com',
    'example' => 'http://example.com',
];

$content = "An example cool and a regular example are different.";


foreach($replacement as $find => $repl){
    $content =  preg_replace("/\b(". $find . ")\b/", "<a href=\"$repl\">$0</a>", $content, 1);
}
echo $content;

这将产生以下结果:

<a href="http://an-<a href="http://example.com">example</a>-cool.com">An example cool</a> and a regular example are different.

如您所见,此结果将替换<a>标记内的单词,现在我在另一个<a>标记的href内有一个<a>。 / p>

预期结果是:

<a href="http://an-example-cool.com">An example cool</a> and a regular <a href="http://example.com">example</a> are different.

因此,如果单词在<a href="{anything}{word}{anything}</a>"之内,我需要找到一种使模式不匹配的方法。

有什么主意吗?

0 个答案:

没有答案