Добрый день!
Подскажите, как правильно настроить регулярное выражение?
Есть строка:
$str= '
текст 1
<a class="btn" href="https://site.ru/">Ссылка1</a>
текст 2
<a href="https://match.com/">Ссылка2</a>
текст 3
<a class="btn" href="https://fall.com/">Ссылка3</a>
текст 4';
Правильно работают выборки:
Удалить все ссылки, в которых содержится
class:
echo preg_replace( '~<(a)[^>]class[^>]*>~siu', "", $str );
Удалить все ссылки, в которых
не содержится
class:
echo preg_replace( '~<(a)[^>](?!class)[^>]*>~siu', "", $str );
Отодвигаюсь внутрь тега.
Успешно удаляются все ссылки, которые ссылаются на сайт, в названии которого встречается
match:
echo preg_replace( '~<(a)[^>]*?match[^>]+>[^<]+<\/\1>~siu', "", $str );
А вот обратная задача: удалить все ссылки, в которых
не содержится
match, у меня не получается (чистятся все теги).
Аналогично: рабочая выборка из первого примера перестаёт работать, как только добавляю модификатор * или +
<(a)[^>]class[^>]*>
<(a)[^>]
+class[^>]*>
Подскажите, как правильно сделать?
https://regex101.com/r/suCdNB/2