подскажите по iconv

1 23
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#21
следовательно - не весь текст страницы вин1251

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

$a->plaintext

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

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
J
На сайте с 08.06.2006
Offline
844
#22

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

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#23
joost:
Если сделать определение кодировки, то дает UTF-8 и ASCII на разные куски текста

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

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

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

J
На сайте с 08.06.2006
Offline
844
#24

Simple HTML DOM Parser

$data = file_get_html($url);

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

---------- Добавлено 17.11.2017 в 17:17 ----------

LEOnidUKG:
если это НЕ UTF-8 то выполнять перекодировку с cp1251->utf8

всего документа?

сделал так

$html = iconv("windows-1251","UTF-8//TRANSLIT//IGNORE",file_get_contents($url));

$data = str_get_html($html);

а как правильно средствами пхп определять кодировку документа по урлу страницы?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#25

Вот дату сразу проверяйте так:

$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)

J
На сайте с 08.06.2006
Offline
844
#26

$data это объект - правильно определит?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#27

А... у вас там же объект сразу же.

$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

J
На сайте с 08.06.2006
Offline
844
#28
LEOnidUKG:
лучше страницы забирать через curl

дайте правильный код для этого (если есть и не сложно)

и почему лучше?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#29
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)

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий