Comments 5
Сразу скажу, что анонимные функции появились только в PHP 5.3 — а в PHP 5.2 в preg_replace_callback пришлось бы совать строку с именем функции, определённой где-то ещё.
+2
Кстати, а разве функции json_encode и json_decode не взаимно обратимы?
И если они обратимы, то почему бы не использовать (для простоты дела) такое решение, при котором итоги работыjson_encode, содержащие \uXXXX-последовательности, скармливаются в json_encode для обратного преобразования?
Я сейчас запустил вот такой тест:
Он выдал мне ту строку, которая от него, как я это понимаю, и требовалася. Со смайлом (единственным символом) на конце.
(Я не могу процитировать её тут: ломается Хабрахабр. Серьёзно.)
И если они обратимы, то почему бы не использовать (для простоты дела) такое решение, при котором итоги работы
Я сейчас запустил вот такой тест:
<?php
header('Content-Type: application/json;charset=utf-8');
function prepareUTF8($matches){
return json_decode('"'.$matches[1].'"');
}
echo preg_replace_callback('/((\\\u[01-9a-fA-F]{4})+)/', 'prepareUTF8',
json_encode( "Самшит \xf0\x9f\x98\x81" )
);
Он выдал мне ту строку, которая от него, как я это понимаю, и требовалася. Со смайлом (единственным символом) на конце.
(Я не могу процитировать её тут: ломается Хабрахабр. Серьёзно.)
0
Sign up to leave a comment.
Articles
Change theme settings
Генератор utf-8 json на php с поддержкой unicode 6