[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: получить страницу в нужной кодировке
z3rg
Подсажите плиз как можно получить страницу в нужной кодировке.

делаю вот так
PHP
$str = @file_get_contents($url);

preg_match("|<meta http-equiv=\"Content-Type\" content=\"text/html; charset=(.*)\" />|i"$str$hfh);
$crarset trim(strtolower($hfh[1]));

if(
$crarset != "utf-8" AND $crarset != "utf8")
  {
  
$str=iconv($crarset"utf-8",$str);    
  }

но у некоторых отображается windows-1251 а в реале utf-8, может есть что-то более уневерсальное



Спустя 4 часа, 6 минут, 23 секунды (25.08.2009 - 04:04) chemax написал(а):
через курс можно кодировку менять

Спустя 11 часов, 26 минут, 38 секунд (25.08.2009 - 15:30) z3rg написал(а):
нужно не менять а получить в нужной кодировке

Спустя 27 минут, 3 секунды (25.08.2009 - 15:57) xPoint написал(а):

можно еще по http-заголовку Content-Type ориентироваться. Большинство браузеров именно по нему и ориентируется и игнорирует meta-тег.

Спустя 21 минута, 37 секунд (25.08.2009 - 16:19) chemax написал(а):
в смысле в курле и получается в нужной. а так на мету забей. выводи header

Спустя 49 минут, 1 секунда (25.08.2009 - 17:08) z3rg написал(а):
chemax, чето нифига не понял???
если страница страница в утф то чембы ты не получал курлом либо через гетконтент она в утф и получит, а мне нужно к единому стандарту привести.

через заголовок вот так сделал
PHP
function CurlPage($path$post$proxy) {


$agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)";
$ch curl_init $path );
@
curl_setopt $ch CURLOPT_USERAGENT $agent );
@
curl_setopt $ch CURLOPT_HEADER 1);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
curl_setopt($chCURLOPT_TIMEOUT20); 
curl_setopt($ch,CURLOPT_ENCODING,"gzip,deflate");
curl_setopt($chCURLOPT_REFERER"");

if(
$post!='')
{
curl_setopt($chCURLOPT_POST,1);
curl_setopt($chCURLOPT_POSTFIELDS$post);
}

if(
$proxy!=''
{
curl_setopt $ch CURLOPT_PROXY$proxy);
}

$tmp = @curl_exec $ch );

if ( 
preg_match ("/charset\s*=[\"']?(.*)[\"']?\b/i",$tmp,$temp)){
    
$charset_heder trim ($temp[1]);
    if(
strtoupper($charset_heder) != "UTF-8"){
    
$tmp iconv(strtoupper($charset_heder),"UTF-8",$tmp);
    }
}

unset(
$temp);

return 
$tmp;
}


а по другому распознать кодировку не получится???
гдето видел функция была

Спустя 1 час, 16 минут, 24 секунды (25.08.2009 - 18:24) xPoint написал(а):
ну можно еще попробовать определить кодировку с помощью ф-ции mb_detect_encoding().
Хотя ручаться за нее не могу, поскольку сам нигде не использовал.

Спустя 1 час, 9 минут, 27 секунд (25.08.2009 - 19:34) z3rg написал(а):
xPoint, понятно спасибо, вроди нормально определяет через заголовок
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.