Как получить Content-type с помощью простого html dom?

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


person user198729    schedule 06.02.2010    source источник
comment
simple dom означает simplehtmldom, как в simplehtmldom.sourceforge.net?   -  person VolkerK    schedule 06.02.2010


Ответы (3)


SimpleHTMLDom не использует строковые литералы в кавычках в селекторе. Это просто elem[attr=value]. И сравнение 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 также будет соответствовать <meta http-equiv="haha-no-content-types"... (она только проверяет, находится ли строка где-то в значении атрибута). Но это единственная нечувствительная к регистру функция/оператор, которую я смог найти. Думаю, в этом случае с этим можно жить ;-)
edit 3: используется preg_match('.../i') и шаблон/селектор напрямую передается этой функции. Поэтому вы можете сделать что-то вроде http-equiv*=^content-type$ для соответствия http-equiv="Content-type", но не http-equiv="xyzContent-typeabc". Но я не знаю, является ли это гарантированной функцией.

person VolkerK    schedule 06.02.2010
comment
Спасибо, я буду жить с ним счастливо! - person user198729; 06.02.2010

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

person troelskn    schedule 06.02.2010

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

person Adam Kiss    schedule 06.02.2010