我尝试过find('meta[http-equiv="Content-type"]')
,但未能检索到该信息。
3 回答
SimpleHTMLDom 在选择器中不使用带引号的字符串文字。只是elem[attr=value]
。并且值的比较似乎区分大小写(可能有一种方法可以使其不区分大小写,但我不知道)*
例如
require 'simple_html_dom.php';
$html = file_get_html('http://www.google.com/');
// most likely one one element but foreach doesn't hurt
foreach( $html->find('meta[http-equiv=content-type]') as $ct ) {
echo $ct->content, "\n";
}
打印text/html; charset=ISO-8859-1
。
*编辑:是的,有一种方法可以执行不区分大小写的匹配,请使用*=
而不是=
find('meta[http-equiv*=content-type]')
edit2:顺便说一句,http-equiv*=content-type
thingy 也会匹配<meta http-equiv="haha-no-content-types"...
(它只测试字符串是否在属性值的某个位置)。但它是我能找到的唯一不区分大小写的函数/运算符。我想在这种情况下你可以忍受它;-)
编辑 3:它使用 preg_match('.../i') 并且模式/选择器直接传递给该函数。因此,您可以执行类似http-equiv*=^content-type$
匹配http-equiv="Content-type"
但不执行的操作http-equiv="xyzContent-typeabc"
。但我不知道这是否是一个保证的功能。
Content-Type 通常是 http-response 标头的一部分,而不是正文。你从哪里得到的 xml 文档?
如果写的不同,我会继续- 我认为浏览器在这种情况下不区分大小写,而 php 可能是foreach
。$this->find('meta');
content-type