Как игнорировать регистр символов в значении атрибута?

Я использую 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 «имя» или его значение «описание» имеет заглавные буквы (ИМЯ, ОПИСАНИЕ) или заглавные буквы (имя, описание).

Как мне обойти это без слишком большого количества кодов?

0

Решение

Вы также можете попробовать PHP strcasecmp()

пример

if (strcasecmp($metaname, 'description') == 0) {
//equals
}

И, согласно этот так ответ, strcasecmp() а также strtolower() подходы O (N) в скорости, однако с использованием strtolower() выделяет новую строку для хранения результата, что в свою очередь увеличивает нагрузку на память и снижает производительность

PHP Doc

1

Другие решения

Вы можете использовать strtolower, чтобы сделать все символы маленькими $ metaname
Измените ваше IF-условие на следующее

if(strtolower($metaname) == 'description')
$description = $meta->getAttribute('content');
1

По вопросам рекламы [email protected]