如何使用html简单dom获取Content-type?

时间:2010-02-06 15:54:40

标签: php content-type simple-html-dom

我尝试了find('meta[http-equiv="Content-type"]'),但未能检索到该信息。

3 个答案:

答案 0 :(得分:3)

SimpleHTMLDom在选择器中不使用带引号的字符串文字。它只是elem[attr=value]的比较似乎区分大小写(可能有一种方法可以使它不区分大小写,但我不知道)*

E.g。

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"。但我不知道这是否是一个有保证的功能。

答案 1 :(得分:0)

Content-Type通常是http响应标头的一部分 - 不在正文中。你从哪里得到xml文件?

答案 2 :(得分:0)

我会foreach $this->find('meta'); content-type,如果有不同的{{1}} - 我认为浏览器在这种情况下不区分大小写,而php可能是。