Ну тогда у вас всё ок. Тема закрыта 🍿
Ну само пройдёт, или показывайте сайт.
Потому, что сайт поставит защиту, без user-agent не пускать и всё, не будет скрипт работать или проверка будет покукам и т.д.
function curl_gets($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_ENCODING, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 OPR/49.0.2725.39');
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$page=curl_gets($url);
if (!mb_detect_encoding($page , 'UTF-8', true))
{
$page =iconv("cp1251", "UTF-8//TRANSLIT//IGNORE",$page );
$data=str_get_html($page)
foreach($data->find($tag) as $a)
А... у вас там же объект сразу же.
$page = file_get_contents($url);
foreach($data->find($tag) as $a)---------- Добавлено 17.11.2017 в 16:35 ----------p.s. лучше страницы забирать через curl
Вот дату сразу проверяйте так:
$data = file_get_html($url);
if (!mb_detect_encoding($data, 'UTF-8', true))
$data=iconv("cp1251", "UTF-8//TRANSLIT//IGNORE",$data);
Нет, не так. Прочитайте ещё раз, что я писал про функции PHP и как надо по правильному делать.---------- Добавлено 17.11.2017 в 16:12 ----------Если все сайты на русском, то в 99,9% это или utf-8 или cp1251. Проверку надо делать так, если это НЕ UTF-8 то выполнять перекодировку с cp1251->utf8
Нет, не следовательно. Если браузер отображается нормально, значит не в этом дело.
$a->plaintext
откуда появляется? Кто его обрабатывает? Попробуйте всю страницу СРАЗУ перевести в utf8 и потом уже выдирать куски.
Где вы там про рамблер то видели?
© АО «КОРПОРАЦИЯ МСП», 2017 http://corpmsp.ru/
Нет тут проблема, что всё доверилось стандартным функциям, а они в этом деле "неалло".
Конкретно этого сайта?
Так проверяйте по этой строчке на странице:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
если нет этой строчки, то проверяйте по хедеру ответа в какой кодировке предоставляются данные.
Но никак не функциями PHP ---------- Добавлено 17.11.2017 в 14:02 ----------
как вы это смотрите? phpmyadmin последней версии? БД и таблицы точно в utf-8? При подключении к БД случаем кодировка cp1251 не выставлена?