Я получаю страницу в utf-8 с русским языком, используя curl. если я эхо текст, это хорошо. то я использую такой код
$dom = new domDocument; /*** load the html into the object ***/ @$dom->loadHTML($html); /*** discard white space ***/ $dom->preserveWhiteSpace = false; /*** the table by its tag name ***/ $tables = $dom->getElementsByTagName('table'); /*** get all rows from the table ***/ $rows = $tables->item(0)->getElementsByTagName('tr'); /*** loop over the table rows ***/ for ($i = 0; $i <= 5; $i++) { /*** get each column by tag name ***/ $cols = $rows->item($i)->getElementsByTagName('td'); echo $cols->item(2)->nodeValue; echo '<hr />'; }
$ html содержит русский текст. после него строка echo $ cols-> item (2) -> nodeValue; отображать текст ошибки, а не русский. Я пытаюсь iconv, но не работаю. есть идеи?
Я предлагаю использовать mb_convert_encoding перед загрузкой страницы UTF-8.
$ dom = новый DomDocument (); $ html = mb_convert_encoding ($ html, «HTML-ENTITIES», «UTF-8»); @ $ Dom-> loadHTML ($ HTML);
ИЛИ иначе вы могли бы попробовать это
$ dom = новый DomDocument ('1.0', 'UTF-8'); @ $ Dom-> loadHTML ($ HTML); $ dom-> preserveWhiteSpace = false; .......... echo html_entity_decode ($ cols-> item (2) -> nodeValue, ENT_QUOTES, "UTF-8"); ..........
DOM не может распознать кодировку HTML. Вы можете попробовать что-то вроде:
$doc = new DOMDocument(); $doc->loadHTML('<?xml encoding="UTF-8">' . $html); // taken from http://php.net/manual/en/domdocument.loadhtml.php#95251
mb_convert_encoding ($ html, «HTML-ENTITIES», «UTF-8»);
То же самое с PHPQuery.
PS Я использую phpQuery :: newDocument ($ html);
вместо $ dom-> loadHTML ($ html);