RegEx соответствует фразе из HTML, кроме ссылок и заголовков - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно заменить фразу на ссылку из html (описание), но не из ссылок и заголовков. За одно описание можно заменить несколько фраз. У меня есть около 100 000 описаний для замены.

Я использовал этот код:

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 Ответ

1 голос
/ 26 марта 2019

Мой ответ на вопрос:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...