如何忽略属性值的字符大小写?

时间:2014-10-19 16:38:40

标签: php xmldom

我使用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属性&#34; name&#34 ;,则上面的代码不会输出内容值。或其价值&#34;描述&#34;是大写(NAME,DESCRIPTION)或大写(名称,描述)。

如果没有太多代码,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以使用strtolower将所有字符设为 $ metaname 的小字符 将您的IF条件修改为以下

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

答案 1 :(得分:1)

您也可以尝试使用php strcasecmp()

示例

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

而且,根据this SO answerstrcasecmp()strtolower()方法的速度为o(n),但使用strtolower()分配一个新字符串来保存结果增加内存压力并降低性能

PHP Doc