PHP Regex, удалить строку из другой, если выражение допустимо

Есть много вопросов, подобных этому вопросу, но я не могу найти точный ответ. И я не знаком с темой регулярного выражения.

PHP7: я хочу проверить, содержит ли $str html-код, а его href ссылается на URL-адрес: "website.fr", например '<a href = "www.website.fr/123/">*****</a>'

Я использовал шаблон <\b[a>]\S*\</a>, но он не работает. Любая помощь, пожалуйста.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
32
2

Ответы 2

Это регулярное выражение перехватывает элемент a с атрибутом href, который ссылается на URL-адрес website.fr:

<a.*\shref = "([^"]*\.)?website\.fr([./][^"]*)?"

Объяснение:

  • <a[^>]*: начало якоря
  • \shref = ": ...за которым следует открытый атрибут href
  • ([^"]*\.)?: URL-адрес может начинаться с чего угодно, кроме кавычки, и заканчиваться точкой.
  • website\.fr : ваш сайт
  • ([./][^"]*)?: URL-адрес может заканчиваться косой чертой, за которой следует что угодно, кроме кавычки.

Это регулярное выражение может не охватывать все случаи (например, URL-адрес, содержащий цитату). Как правило, не рекомендуется анализировать HTML с помощью регулярных выражений. Лучше использовать парсер XML.

В общем, анализировать HTML с помощью регулярных выражений — плохая идея (см. этот вопрос). В PHP вы можете использовать DOMDocument и DOMXPath для поиска элементов с определенными атрибутами в документе HTML. Что-то вроде этого, который ищет элемент <a> где-то в HTML, который имеет значение href, содержащее строку 'website.fr/':

$html = '<a href = "www.website.fr/123/">*****</a>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
if (count($xpath->query("//a[contains(@href, 'website.fr/')]")))
    echo "found"; 
else
    echo "not found";

Демо на 3v4l.org

Другие вопросы по теме