Я не знаю что еще можно рассказать по данному вопросу.
1) <? header("Content-Type: text/html; charset=utf-8"); ?> - к контексту данной темы отношения не имеет, ибо вы получая контент стороннего сайта не можете заставить его передать заголовок. А заголовок не обязательно может передаваться РНР, это может делать и Apache. О коллизиях передачи кодировки посредством заголовка и мета тега читайте в сети, есть такое, пересказывать это здесь нет смысла.
2) "Я этот код убрал за ненадобностью ... тогда выручает даже не этот код, а такой" - это потому, что вы не анализируете данные, а действуете методом "научного тыка". Поэтому у вас и "возникает вопрос что за хрень творится с кодировкой". А надо не тыкать, а определить кодировку. Почему она криво определяется, это с вопрос к разработчику. Как это можно решить я показывал. Но решение то основано не на методе тыка, а вставлено ее определение именно такой, в какой и приходит документ.
3) Чем лучше file_get_contents? DOMDocument быстрей - file_get_contents не может быть ни лучше, ни хуже DOMDocument, это кардинально разные вещи, и говорить о скоростях бессмыслица. Вы уж проанализируйте код дабы понять почему file_get_contents.
4) Что анализировать то? - открываем отладчик браузера и запрашиваем страницу этой темы. Смотрим структуру этого документа и видим, что данная страница не имеет указания кодировки посредством <meta http-equiv="Content-Type" content="text/html; charset=utf-8">. А как узнать программно кодировку документа? Только анализируя соответствующий заголовок передаваемый сервером. Узнав ее формируем тег <meta http-equiv="Content-Type" что_узнали> и далее как показано.
Так понятно почему file_get_contents и loadHTML?
Последний раз редактировалось laimas, 17.01.2018 в 10:17.
|