Добрый вечер, коллеги. Помогите!
С недавних пор на одном из сайтов (на злосчастном 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.