@Adel1ne

Проблема с кодировкой в Simple HTML DOM Parser?

Здравствуйте!

Столкнулся с проблемой кодировки при использовании PHP Simple HTML DOM Parser.
Вытаскивают html-текст из абзацев при помощи функции innertext(). В тексте могут быть тэги,
например текст1 или вообще ссылка куда-то

Ну а теперь к сути, вот код:
foreach ($html->find('div[class="text"] p') as $text) {
$fulltext .= iconv("Windows-1251", "UTF-8", $text->innertext());
}


Помимо этого на странице много чего еще вытаскивается через plaintext.

Проблема в следующем:
Страница, которую я парсю, имеет кодировку Windows-1251, мой код (index.php) и сам
simple_html_dom.php в кодировке UTF-8.То, что вытаскивается через plaintext, отображается нормально, а вот innertext() похоже вытаскивает информацию в кодировке страницы, то есть, в моем случае - Windows-1251.
ОК, делаем конвертацию с помощью iconv и, по идее, все должно быть отлично. Большая часть текста отображается корректно в кодировке UTF-8, однако засада в том, что текст, заключенный в тэги почему то отображается кракозябрами. То ли на него не срабатывает iconv, то ли еще что, но как победить эту штуку, я не понял. Причем если сделать кодировку своей страницы в Windows-1251, это все равно не поможет.

Есть идеи?
  • Вопрос задан
  • 5239 просмотров
Решения вопроса 1
fornit1917
@fornit1917
Поместите весь контент html-страницы в строковую переменную, сконвертируйте в нужную кодировку (UTF-8) и только потом уже скармливайте ее в simple html dom parser. Я именно так всегда и делал и никогда не испытывал никаких проблем.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Adel1ne Автор вопроса
Vit Vit , Поместите весь контент html-страницы в строковую переменную

Не подскажете, как это сделать?
Ответ написан
@Jekshmek
кодер штродер
$d= mb_convert_encoding($d, 'utf-8', mb_detect_encoding($d));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы