Я пытаюсь извлечь мета-теги из html-страницы, чтобы сравнить две страницы (live и dev), чтобы убедиться, что их SEO одинаковы после редизайна / реорганизации сайта.Мне нужно сравнить заголовок, мета-теги (описание, opengraph и т. Д.), H1, нашу аналитику (Omniture) и наши рекламные теги (двойной клик), которые одинаковы.
Моя проблема с получением мета-тегов http://php.net/manual/en/function.get-meta-tags.php работает, только если у них есть атрибут name =, то же самое с решением "mariano at cricava dot com".
Я не знаюЕсли я не хочу ограничивать его наличием определенных атрибутов, я могу предположить, что все наши метатеги имеют либо имя =, либо свойство =, либо http-эквивалент =, и соответствующим образом изменить регулярное выражение, но не могу быть полностью уверен, поскольку это массивный веб-сайт ив тегах может быть любое случайное дерьмо (следовательно, этот инструмент предназначен для проверки этого материала!), и я хотел бы оставить его как можно более динамичным.
У меня есть
$page = @file_get_contents('http://.../');
preg_match_all('#<meta(?:\s+?([^\=]+)\=\"(.+?)\")+?\s*?/?>#sui', $page, $matches, PREG_SET_ORDER)
, но подшаблоныперекрывают друг друга, так что это только вытаскивает последнюю пару атрибут-имя = атрибут-значение
Array
(
[0] => Array
(
[0] => <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
[1] => content
[2] => text/html; charset=UTF-8
)
[1] => Array
(
[0] => <meta name="description" content="some description" />
[1] => content
[2] => some description
)
[2] => Array
(
[0] => <meta property="og:type" content="website" />
[1] => content
[2] => website
)
...
Мне нужны все атрибуты для всех метатегов.Я мог бы сделать это в два шага, вытащив содержимое <meta ([^>]*)>
, затем выполнив второе регулярное выражение для результатов, но это кажется ненужным с силой регулярного выражения?