AlexanderTsymbal
@AlexanderTsymbal
tsymbal.su

PHP Simple HTML DOM и кириллица несовместимы?

Добрый вечер, коллеги. Помогите!

С недавних пор на одном из сайтов (на злосчастном nic.ru), где используется класс Simple HTML DOM перестала парситься кириллица. Хотя раньше всё было ок. Я понимаю, что что-то могло поменяться в настройках сервера, но сейчас речь не об этом.

Есть кусок html-кода, который "кушает" Simple HTML DOM, и если в нём присутствует кириллица, то парсинг обрывается на первом же теге, в котором она найдена.

Пример банальный:
$gt_text_volume = "<p>latin</p><p>кириллица</p><h3>latin 3</h3>";//собственно, кусок кода
//...(подключили Simple HTML DOM)
$html = str_get_html($gt_text_volume);//загоняем его в парсер
$tags = $html->find('*');//ищем все теги
foreach ($tags as $key => $tag) {//перебираем их
  echo "\r\n".$tag->innertext;//пытаемся вывести содержимое
}
Результат получаем следующий:
latin
кириллица
Т.е., парсер дошёл до второго тега с кириллицей, и на нём оборвался перебор.

Если я заменю исходный кусок кода на нижеследующий (т.е. удалю из него всю кириллицу)
$gt_text_volume = "<p>latin</p><p>latin 2</p><h3>latin 3</h3>";
То результат корректный. Выводится следующее:
latin 
latin 2 
latin 3


Файл в UTF-8, сайт работает в UTF-8.

Может, кто сталкивался? Я обгуглил весь интернет (так мне кажется), нашёл вопросы с такой же проблемой. Но ответов нет. ПОМОГИТЕ! Слёзно прошу!

UPD: Решение найдено. Для корректной работы нужно убедиться что mbstring.func_overload = 0.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Боты, парсеры, расширения
В начале вашего PHP файла разместите:
<?php

// Устанавливаем тип документа и его кодировку:
header('Content-Type: text/html; charset=utf-8');

// Включаем показ ошибок:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

// Далее ваш код

И повторите попытку. Если будут ошибки, текст ошибок сюда.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
RecruitIT Москва
от 100 000 до 160 000 ₽
Simtech Development Санкт-Петербург
от 100 000 ₽
Сбер Москва
До 240 000 ₽