Чтобы получить титул, я использую:
$titles = $xpath->query('/html/head/title');
foreach ($titles as $title) {
$return['title'][] = $title->nodeValue;
}
Потому что это возможно, что DOM имеет несколько <title />
теги, хотя это не рекомендуется.
тогда я анализирую все <meta />
теги, как таковой:
$metas = $xpath->query('/html/head/meta');
foreach ($metas as $meta) {
$name = strtolower($meta->getAttribute('name'));
if ($name == 'title' && (!isset($return['title']) || $return['title'] == '')) // There is such a thing as <meta name="title" \>
$return['title'][] = $meta->getAttribute('content');
if ($name == 'keywords')
$return['metakw'][] = $meta->getAttribute('content');
if ($name == 'description')
$return['metadesc'][] = $meta->getAttribute('content');
if ($name == 'robots')
$return['robots'][] = $meta->getAttribute('content');
}
Но я думаю, можно было бы использовать:
$metas_title = $xpath->query('/html/head/meta[@name="title"]');
$metas_desc = $xpath->query('/html/head/meta[@name="description"]');
$metas_kw = $xpath->query('/html/head/meta[@name="keywords"]');
$metas_robots = $xpath->query('/html/head/meta[@name="robots"]');
Таким образом, используя этот $ metas_title = $ xpath-> запрос ('/ html/голова/мета [@ имя = "название"]'); как напечатать $ meta_title значение? – Marcin
Это даст вам массив метатегов, вы должны пройти через него (используя, например, простой 'foreach'), а затем использовать' $ meta-> getAttribute ('content'); '. Но будьте осторожны, что '' очень редко и часто является ошибкой, правильный синтаксис - '
Я вижу что-то вроде этого $ return ['title'] [] в первый раз, извините, но до сих пор не знаю, что с этим делать:/ – Marcin