PHP-HTML-парсинг :: Как можно взять значение кодировки веб-страницы с помощью простого анализатора html dom?

PHP :: Как можно взять значение кодировки веб-страницы с помощью простого анализатора html dom (utf-8, windows-255 и т. Д.)?

замечание: его нужно сделать с помощью html dom parser http://simplehtmldom.sourceforge.net

Пример 1: ввод в кодировку веб-страницы:

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 

Результат: UTF-8



Пример2: ввод символа веб-страницы:

 <meta content="text/html; charset=windows-255" http-equiv="Content-Type"> 

Результат: окна-255

Редактировать:

Я пробую это (но его не работает):

 $html = file_get_html('http://www.google.com/'); $el=$html->find('meta[content]',0); echo $el->charset; 

Что должно измениться? (Я знаю, что $ el-> charset не работает)

благодаря

Вам придется сопоставить строку с использованием регулярного выражения (надеюсь, у вас есть PCRE …).

 $el=$html->find('meta[http-equiv=Content-Type]',0) $fullvalue = $el->content; preg_match('/charset=(.+)/', $fullvalue, $matches); echo $matches[1]; 

Не очень надежный, но должен работать.

 $dd = new DOMDocument; $dd->loadHTML($data); foreach ($dd->getElementsByTagName("meta") as $m) { if (strtolower($m->getAttribute("http-equiv")) == "content-type") { $v = $m->getAttribute("content"); if (preg_match("#.+?/.+?;\\s?charset\\s?=\\s?(.+)#i", $v, $m)) echo $m[1]; } } 

Обратите внимание, что расширение DOM неявно преобразует все данные в UTF-8.

Спасибо за ответ MvanGeest – я просто немного исправим, и его работы прекрасны.

 $html = file_get_html('http://www.google.com/'); $el=$html->find('meta[content]',0); $fullvalue = $el->content; preg_match('/charset=(.+)/', $fullvalue, $matches); echo substr($matches[0], strlen("charset="));