аддлэш и json_encode не работают вместе - PullRequest
0 голосов
/ 03 июля 2018
$val = "I'm string";

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

"I\'m string"

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

json_encode($arr);

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

"I\\'m string"

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

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

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

json_encode($array, JSON_UNESCAPED_SLASHES);

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

0 голосов
/ 03 июля 2018

Если вы действительно хотите получить ответ на этот вопрос, вы можете поменять свой 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

0 голосов
/ 03 июля 2018

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

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

...