Непонятная проблема с обработкой строк [PHP]

Печать RSS
268

Автор
Оранжевые штаны
0
Доброго времени суток всем!
Пишу парсер для сайта, кодировка у сайта UTF-8, у моих скриптов аналогичная, идем дальше.. Получаю зашифрованные данные от сайта в виде таких строк
\u0028\u0066\u0075\u006e\
Разбираю их следующим способом
function replace_unicode_escape_sequence($match) {
    return mb_convert_encoding(pack('H*', $match[1]), "UTF-8", "auto");
}
$coded = preg_replace_callback('/\\\\u([0-9a-f]{4})/sU', 'replace_unicode_escape_sequence', $coded);
После перекодировки с данным не возможно работать, preg_match() вообще не обращает внимания ни на какие регулярки.. К примеру, после раскодирования на выходе получаю json данные, пробую их декодировать в массив при помощи функции json_decode(), функция мне возвращает NULL то есть нет данных для вывода, хотя если эти самые json данные указать напрямую в скрипте
print_r(json_decode('json строка'));

То они успешно декодируются в нужный мне массив. Пните плиз в правильном направлении, а то уже 2 часа сижу гуглу надоедаю..
Изменил: Антон (01.07.2013 / 19:35)
А

Пришелец
0
Создай файл заново и вставь в него готовый код или имя файла смени.
Автор
Оранжевые штаны
0
2. ByKuznec, сори не осилил твой пост.. При чем тут файл?
К

Айсберг Визави
0
вроде как ты ищешь регуляркой в бинарной строке?
Автор
Оранжевые штаны
0
4. Кевин Митник_HHTeam, разве в бинарной? При выводе данных в браузер они нормально отображаются..
К

Айсберг Визави
0
Вот это - \u0028\u0066\u0075\u006e\ - 16ричная система. Ты функцией pack преобразовываешь в двоичную
Изменил: Кевин Митник (01.07.2013 / 20:03)
А

Пришелец
0
3. WmLiM, при том, что если файл сохраняешь в несколько раз в разных кодировках, то на выводе может получится ошибка. В самого была подобная ситуация, делал все верно, а оно не работало должным образом. Теперь осилил?

Пришелец
0
ох и не лёгкая это работа
Автор
Оранжевые штаны
0
7. ByKuznec, ты когда парсишь данные с другого сайта, вначале разбираешь ответ по полочкам и потом сохраняешь в файл или наоборот? Осилил? В первом посте написанно что трабл возникает на этапе обработки ответа.

Добавлено через 01:29 сек.
6. Кевин Митник_HHTeam, вот за дельный совет спасибо тебе)) Пойду проверю...
К

Айсберг Визави
0
ТС, последовательность операций не верная.
1. Данные, а именно 16-ричное представление очищаешь от \u.
2. Обработка hex2bin. На выходе двоичные данные.
3. Изменение кодировки

Добавлено через 01:09 сек.
я только что проверил. работает
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск