我使用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)或大写(名称,描述)。
如果没有太多代码,我该如何解决这个问题?
答案 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 answer,strcasecmp()
和strtolower()
方法的速度为o(n),但使用strtolower()
分配一个新字符串来保存结果增加内存压力并降低性能