Пожалуйста, помогите победить кодировку.
Проблема следующая, в ответ на curl приходит сайт в котором в meta прописана кодировка windows-1251 из-за этого на сайте отображаются иероглифы. Данную проблему решил с помощью:
$isWinCharset = mb_check_encoding($postResult, "windows-1251");
if ($isWinCharset) {
$postResult = iconv("windows-1251", "UTF-8", $postResult);
}
Теперь если в meta стоит кодировка windows-1251 сайт отображается корректно. Если в meta стоит кодировка utf-8 сайт отображается корректно. Обрадовался. Но вдруг нашел пару сайтов, которые слетели после добавления:
$isWinCharset = mb_check_encoding($postResult, "windows-1251");
if ($isWinCharset) {
$postResult = iconv("windows-1251", "UTF-8", $postResult);
}
в meta указана кодировка UTF-8 а сайт в результате в иероглифах, пример такого сайта: http://e-qa.ru/autoprodazha
Таких сайтов не много но они есть и очень раздражают, большинство сайтов где в meta UTF-8 работают корректно. Видимо кодировка самого файла у данного сайта e-qa.ru/autoprodazha отличается от указанной в meta из-за этого происходит конфликт.
Помогите разобраться и устранить иероглифы на всех сайтах, кучу методов перепробовал и все взаимоисключающие :(
Код:
$ch = curl_init();
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_URL, $engine_url );
//"identity", "deflate" , "gzip"
//curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$postResult = curl_exec($ch);
curl_close($ch);
$isWinCharset = mb_check_encoding($postResult, "windows-1251");
if ($isWinCharset) {
$postResult = iconv("windows-1251", "UTF-8", $postResult);
}
echo $postResult;
Пример определения кодировки страницы по заголовку ответа сервера или через тег meta из тела страницы:
<?php
$ch = curl_init();
$user_agent = $_SERVER["HTTP_USER_AGENT"];
$engine_url = 'http://e-qa.ru/autoprodazha';
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_URL, $engine_url );
//curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$postResult = curl_exec($ch);
// Содержимое полученного заголовка Content-Type
$ctype = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
// Попытка определить кодировку из заголовка ответа или тега meta из тела страницы
$charset = null;
if (($ctype !== null && preg_match('%charset=([\w-]+)%i', $ctype, $matches))
|| preg_match('%<meta[^>]+charset=[\'"]?([\w-]+)%i', $postResult, $matches)) {
$charset = $matches[1];
}
//var_dump($charset);
if ($charset && strtoupper($charset) !== 'UTF-8') {
$postResult = iconv($charset, 'UTF-8', $postResult);
}
echo $postResult;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Изучаю yii2 и планирую переводить старый "проект" на рельсы ооп и фреймворкаПроект - пользовательская "база данных"
пытаюсь отправить сообщения с сервера Ubuntu nginx через sendmail выдает вот такую ошибку
Я новичок в wordpress да и в php тожея создал свой post type, и теперь хочу сделать свою форму для добавления записи
Передаю get параметры, но при получении сталкиваюсь с проблемой - $_GET пустой, var_dump показывает NULL, ума не приложу как так получаетсяПри том, что...