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="));