Все-таки я не понял, почему кодировка utf-8 не отображается правильно, ведь должна раз это utf-8. Почему utf-8 по разному смотрится?
|
Уверен ли ты что там именно utf8? Если уверен, то сами php файлы точно в utf8? А хедер, утверждающий что кодирока именно utf8 ты ставишь?
|
Всю тему подсказывают как проверить что utf8, думаю точно utf8. На фиг хедер? Вопрос не о том чтобы как можно больше в файл установок напихать, а о том как вообще работает кодировка. Чуть выше я писал что именно меня интересует. Я ни знаю и ни кто не знает на этом форуме этот вопрос. Читайте внимательней вопросы.
|
Цитата:
Цитата:
$html = file_get_contents(\'https://javascript.ru/forum/misc/72167-poluchenie-metatega-keywords.html\'); $dom = new DOMDocument(); libxml_use_internal_errors(true); $dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . $html); $title = $dom->getElementsByTagName('title')->item(0)->textContent; echo $title; //Получение метатега keywords - Javascript-форум И чтобы это сделать, нужно знать, что данный документ в UTF, а для этого - имеется ли метатег, если нет, то анализировать заголовок. |
Проанализируйте содержание того, что вы запрашиваете, поймете. - это я понимаю, только что что подразумевали под хедер? Я думаю это:
<? header("Content-Type: text/html; charset=utf-8"); ?> Так или иначе по моей логике последнее слово в за установкой кодировки остается за html документом. Я этот код убрал за ненадобностью: <? header("Content-Type: text/html; charset=utf-8"); ?> Хотя бывает что не работает на своем сайте кодировка, тогда выручает даже не этот код, а такой: <? header("Content-Type: text/html; charset=windows-1251"); ?> Вот и возникает вопрос что за хрень творится с кодировкой, а для этого надо знать не как это исправить, а по чему так происходит. И сейчашний вопрос о том же. DOMDocument - почему Вы говорите что я парюсь с ним? Чем лучше file_get_contents? DOMDocument быстрей, если надо работать с содержимым страницы, а мне это и надо. Ваш код хорош, но он в два раза медленней, так как там загружаем и file_get_contents и loadHTML. Но можно пробовать и так. ...имеется ли метатег, если нет, то анализировать заголовок. - что за заголовок? title? Что анализировать то? Напишите пожалуйста то что Вы писали, но в полном варианте (код). |
Я не знаю что еще можно рассказать по данному вопросу.
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? |
Часовой пояс GMT +3, время: 15:10. |