Я использую cURL для получения META-описания веб-страницы. Вот часть кода:
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++)
{
$meta = $metas->item($i);
$metaname = $meta->getAttribute('name');
if($metaname == 'description')
$description = $meta->getAttribute('content');
}
<META name="description" content="<?php echo $description; ?>" />
Работает нормально, но не идеально. Проблема возникает, когда регистр символов атрибута или значения элемента отличается от того, что было определено. Например, приведенный выше код не будет выводить значения содержимого, если атрибут META «имя» или его значение «описание» имеет заглавные буквы (ИМЯ, ОПИСАНИЕ) или заглавные буквы (имя, описание).
Как мне обойти это без слишком большого количества кодов?
Вы также можете попробовать PHP strcasecmp()
пример
if (strcasecmp($metaname, 'description') == 0) {
//equals
}
И, согласно этот так ответ, strcasecmp()
а также strtolower()
подходы O (N) в скорости, однако с использованием strtolower()
выделяет новую строку для хранения результата, что в свою очередь увеличивает нагрузку на память и снижает производительность
Вы можете использовать strtolower, чтобы сделать все символы маленькими $ metaname
Измените ваше IF-условие на следующее
if(strtolower($metaname) == 'description')
$description = $meta->getAttribute('content');