Как получить Content-type используя html simple dom? - PullRequest
0 голосов
/ 06 февраля 2010

Я пытался find('meta[http-equiv="Content-type"]'), но не смог получить эту информацию.

Ответы [ 3 ]

3 голосов
/ 06 февраля 2010

SimpleHTMLDom не использует строковые литералы в кавычках в селекторе. Это просто elem[attr=value]. И сравнение значение кажется чувствительным к регистру (может быть способ сделать его нечувствительным к регистру, но я не знаю) *

* 1006 Е.Г. *

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.

* edit: да, есть способ выполнить регистронезависимое соответствие, используйте *= вместо =

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". Но я не знаю, является ли это гарантированной функцией.

0 голосов
/ 06 февраля 2010

Я бы пошел foreach на $this->find('meta'); в случае написания по-другому content-type - я думаю, что браузеры не чувствительны к регистру, в то время как php может быть.

0 голосов
/ 06 февраля 2010

Content-Type обычно является частью заголовков http-ответа, а не в теле. Откуда вы взяли xml документ?

...