RegEx匹配html中的短语,链接和标题除外

时间:2019-03-26 10:01:42

标签: php html regex

我需要替换短语以从html(description)链接,而不是从链接和标题链接。 一个描述可以替换几个短语。我大约有10万个说明要替换。

我使用了以下代码:

preg_replace("/(\bcustom phrase\b)(?![^<a]*>|[^<>]*.*<\/a>)(?![^<h[0-9]]*>|[^<>]*.*<\/h[0-9]>)/iu", "<a href=\"https://myurl.com\">$1</a>", $text);

当短语在任何链接之前时,它不起作用。 我想我迷路了,需要帮助。

“ ipsum dolor”示例

Lorem ipsum dolor sit amet -> Lorem <a href="https://myurl.com">ipsum dolor</a> sit amet.
Lorem <a href="https://test.com">ipsum dolor</a> sit amet. -> Lorem <a href="https://test.com">ipsum dolor</a> sit amet.
<h1>Lorem ipsum dolor sit amet.</h1> -> <h1>Lorem ipsum dolor sit amet.</h1>
Lorem ipsum dolor sit <a href="https://test.com">amet.</a> -> Lorem ipsum dolor sit <a href="https://test.com">amet.</a> - It does not work

1 个答案:

答案 0 :(得分:1)

我对问题的回答

preg_replace("/<a.*?<\/a>(*SKIP)(*F)|<h[0-9]{1}.*?<\/h[0-9]{1}>(*SKIP)(*F)|<.*?>(*SKIP)(*F)|(\bcustom phrase\b)/iu", "<a href=\"https://myurl.com\">$1</a>", $text);