Да, я знаю, я знаю, что разбор HTML с регулярными выражениями очень плох. Но я работаю с устаревшим кодом, который должен извлечь все элементы link
и style
со страницы html. Я бы изменил его и использовал расширение dom
, но после регулярного выражения есть огромный блок кода, который опирается на способ, которым preg_match_all
возвращает согласованные результаты.таблицы стилей экстрасети с помощью регулярных выражений
Скрипт использует это регулярное выражение:
$pattern = '/<(link|style)(?=.+?(?:type="(text\/css)"|>))(?=.+?(?:media="(.*?)"|>))(?=.+?(?:href="(.*?)"|>))(?=.+?(?:rel="(.*?)"|>))[^>]+?\2[^>]+?(?:\/>|<\/style>)\s*/is';
preg_match_all($pattern, $htmlContent, $cssTags);
Но он не работает. Элементы не сопоставляются. К сожалению, я действительно сосать в регулярном выражении, поэтому, если кто-то сможет мне помочь, это будет здорово.
все матчи используются? Я имею в виду тип, медиа и т. Д.? – galambalazs
@ galambalazs Да, насколько я вижу, это так. – Max
* Огромный блок кода * звучит как хороший кандидат на рефакторинг. Выбросьте его для правильного решения DOM. – Gordon