Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что за формат? кодировка текста и его расшифровка 
V
    Опции темы
alligator
Дата 23.1.2012, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: нет
Всего: 1



Начал парсить данные с мтт ру
уперся в такую кодировку, как сие чудо можно в читабельный вид привести?
Код

{"error":null,"output":"\u003ctable id=\"country-code-table\" class=\"\"\u003e\n 
\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u0421\u0442\u0440\u0430\u043d\u0430\u003c\/th


Это сообщение отредактировал(а) alligator - 23.1.2012, 18:21
PM MAIL   Вверх
ksnk
Дата 23.1.2012, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 12
Всего: 386



Это последствия злоупотребления escape'ом
Код

$var='\u003ctable id=\"country-code-table\" class=\"\"\u003e 
\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u0421\u0442\u0440\u0430\u043d\u0430\u003c';

function repl($m){
  if(!empty($m[1]))
    return mb_convert_encoding(pack('H*', $m[1]), 'UTF-8', 'UTF-16');
  if($m[2]=='n')
    return "\n";
// todo: навставлять нужных комбинаций
}

echo  htmlspecialchars(
stripslashes (preg_replace_callback('/\\\u([0-9a-f]{4})|\\\(\w)/','repl',$var))
);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
alligator
Дата 23.1.2012, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: нет
Всего: 1



Код

$var='\u003ctable id=\"country-code-table\" class=\"\"\u003e 
\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u0421\u0442\u0440\u0430\u043d\u0430\u003c';
function repl($m){
  if(!empty($m[1]))
    return mb_convert_encoding(pack('H*', $m[1]), 'UTF-8', 'UTF-16');//расшифровка из hex и utf16->utf-8
  if($m[2]=='n')
    return "\n";
// todo: навставлять нужных комбинаций
}
echo  htmlspecialchars(
stripslashes (preg_replace_callback('/\\\u([0-9a-f]{4})|\\\(\w)/','repl',$var))); // выдераем 4 символа и отправляем на расшифровку

Супер! сам долго бы делал.... доделаю код выложу полностью, благодарю!

Это сообщение отредактировал(а) alligator - 23.1.2012, 20:12
PM MAIL   Вверх
alligator
Дата 23.1.2012, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: нет
Всего: 1



Как-то так получилось, может надо кому будет=)
Код

function get_static_info($zone,$region){ 
$url = "http://www.mtt.ru/mtt/code/search";  
$ch = curl_init();
//$headers[]="POST /mtt/code/search HTTP/1.0";
//$headers[]="Host: www.mtt.ru";
//$headers[]="Connection: Keep-Alive";
//$headers[]="Content-Length: 123";
$headers[]="Origin: http://www.mtt.ru";
$headers[]="X-Requested-With: XMLHttpRequest";
$headers[]="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7";
$headers[]="Content-Type: application/x-www-form-urlencoded";
$headers[]="Accept: application/json, text/javascript, */*";
$headers[]="Referer: http://www.mtt.ru/mtt/code";
$headers[]="Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4";
$headers[]="Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3";
//curl_setopt($ch, CURLOPT_COOKIEFILE, '/my_cookies.txt');  
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_FAILONERROR, 1);  
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "country=&country_code=".$zone."&city=&abc=".$region."&form_build_id=form-8428305a137740875f6bdaf43949ded1&form_id=mtt_norma_code_search_form");
$result = curl_exec($ch); 
curl_close($ch);  

//print htmlspecialchars(stripslashes (preg_replace_callback('/\\\u([0-9a-f]{4})|\\\(\w)/','repl',$result)));
$x= stripslashes (preg_replace_callback('/\\\u([0-9a-f]{4})|\\\(\w)/','repl',$result));
//print $x;
//preg_match_all("/<td>(\W+)<\/td><td>(\d{1,4})<\/td><td>(\W*)<\/td><td>(\d{1,4})<\/td>/i",$x,$matches);
preg_match_all("/<td>([^<>]+)<\/td>/i",$x,$matches);

return $matches;
}




function repl($m){
  if(!empty($m[1]))
    return mb_convert_encoding(pack('H*', $m[1]), 'windows-1251', 'UTF-16');
  if($m[2]=='n')
    return "\n";
}

Только код еще в порядок надо привести......

Это сообщение отредактировал(а) alligator - 23.1.2012, 22:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.