Использование stripslashes()
разрушает ваши данные.
Допустимый JSON не должен содержать экзотических символов Unicode (которыми являются Emojis), поэтому json_encode()
превращает их в экранированные коды символов. "?"
становится "\ud83d\udcb0"
, а "?
"становится "\ud83d\udcb5"
.
Stripslashes удаляет обратную косую черту, которая указывает на то, что вы имеете дело с символами Unicode, поэтому принимающее приложение не может знать, что эти коды символов необходимо вернуть в Emojis.
Вы никогда не должны вызывать stripslashes()
в строке JSON. Риск аннулирования вашего JSON слишком велик. Например, если ваши данные содержат строку с буквальным символом "
, она будет экранирована как \"
, и удаление значения \
отключит ваш JSON:
$data = ['value' => 'My "awesome" value'];
$json = json_encode($data);
// {"value":"My \"awesome\" value"}
$stripped = stripslashes($json);
// {"value":"My "awesome" value"}
// ^ Syntax error right here