LEOnidUKG

LEOnidUKG
Рейтинг
1776
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование
FrancisDarroze:
Зачем вам показывать сайт?
По моему информации в первом после хватает.

Ну тогда у вас всё ок. Тема закрыта 🍿

FrancisDarroze:
Сайт новый. Но ошибка в вебмастере на счет фавиконки

Ну само пройдёт, или показывайте сайт.

joost:
дайте правильный код для этого (если есть и не сложно)
и почему лучше?

Потому, что сайт поставит защиту, без 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);

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)

---------- Добавлено 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);

}

foreach($data->find($tag) as $a)

joost:
Если сделать определение кодировки, то дает UTF-8 и ASCII на разные куски текста

Нет, не так. Прочитайте ещё раз, что я писал про функции PHP и как надо по правильному делать.

---------- Добавлено 17.11.2017 в 16:12 ----------

Если все сайты на русском, то в 99,9% это или utf-8 или cp1251. Проверку надо делать так, если это НЕ UTF-8 то выполнять перекодировку с cp1251->utf8

следовательно - не весь текст страницы вин1251

Нет, не следовательно. Если браузер отображается нормально, значит не в этом дело.

$a->plaintext

откуда появляется? Кто его обрабатывает? Попробуйте всю страницу СРАЗУ перевести в utf8 и потом уже выдирать куски.

stardel:
При чём тут распил?) Пилить то что?)

Где вы там про рамблер то видели?

© АО «КОРПОРАЦИЯ МСП», 2017 http://corpmsp.ru/

Корпорация МСП осуществляет свою деятельность в качестве института, развития в сфере малого и среднего предпринимательства (МСП) в целях координации оказания субъектам МСП поддержки, предусмотренной Федеральным законом от 24.07.2007 №209-ФЗ «О развитии малого и среднего предпринимательства в Российской Федерации».

Sitealert:
Поразительное упорство - зная, что там не cp1251, пытаться конвертировать из cp1251 🤪

Нет тут проблема, что всё доверилось стандартным функциям, а они в этом деле "неалло".

ок
делаю
$a->plaintext = iconv("windows-1251","UTF-8//TRANSLIT//IGNORE",$a->plaintext);
в БД русские буквы Продажа

Конкретно этого сайта?

парсинг разных сайтов идет

Так проверяйте по этой строчке на странице:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

если нет этой строчки, то проверяйте по хедеру ответа в какой кодировке предоставляются данные.

Но никак не функциями PHP

---------- Добавлено 17.11.2017 в 14:02 ----------

в БД русские буквы Продажа

как вы это смотрите? phpmyadmin последней версии? БД и таблицы точно в utf-8? При подключении к БД случаем кодировка cp1251 не выставлена?

Всего: 31516