аддлэш и json_encode не работают вместе

$val = "I'm string";

Для этого типа строки я использую функцию addlashes, которая преобразует строку следующим образом:

"I\'m string"

и сохранить в базе данных. Когда я получаю все данные из базы данных в массив полей и передал массив в

json_encode($arr);

В ответ я получаю строку с дополнительной косой чертой, как это:

"I\\'m string"

И я хотел удалить тот лишний слеш, который добавляется json_encode. как я это делаю ??

0

Решение

Если вы действительно хотите получить ответ на этот вопрос, вы можете отменить addslashes с stripslashes,

Но никогда не используйте функцию addlashes для экранирования значений, которые вы собираетесь отправить в mysql.

Используйте нативно подготовленные высказывания, mysqli_real_escape_string() или же PDO::quote,

НО ПРИМЕЧАНИЕ:

  1. Не используйте уязвимый набор символов для кодирования соединения (используйте
    utf8 или что-то)
  2. Используйте более высокую версию MySQL, чем 5.7.6.

Подробнее о проблемах с набором символов читайте здесь: http://php.net/manual/en/mysqlinfo.concepts.charset.php

2

Другие решения

Ты можешь использовать stripslashes.

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

2

Это может быть даже возможно с этим (хотя я думал, что это косая черта / только:

json_encode($array, JSON_UNESCAPED_SLASHES);

Но прислушайтесь к комментариям и ответу Script47 и просто исправьте это правильно.

-2
По вопросам рекламы [email protected]