Есть много вопросов, подобных этому вопросу, но я не могу найти точный ответ. И я не знаком с темой регулярного выражения.
PHP7: я хочу проверить, содержит ли $str html-код, а его href ссылается на URL-адрес: "website.fr", например '<a href = "www.website.fr/123/">*****</a>'
Я использовал шаблон <\b[a>]\S*\</a>, но он не работает.
Любая помощь, пожалуйста.






Это регулярное выражение перехватывает элемент 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";