Как убрать косые черты в Javascript (JSON)? Любой плагин JQuery? - PullRequest
1 голос
/ 25 октября 2010

Итак, когда я сохраняю данные в базе данных, PHP добавляет \ на одинарные или двойные кавычки. Это хорошо.

Однако, когда данные передаются обратно клиенту с помощью json_encode (); ТЕКСТ, как и McDonald's, хранится как McDonald's в БД, но после передачи из PHP в js он будет закодирован как McDonald's

Так как я использую jQuery, есть ли плагин, чтобы легко это сделать? или любую функцию, которую я должен использовать, чтобы правильно удалить косые черты? очевидно, если есть регистр типа \\\\s, функция должна вернуть \s. :)

Извините, ребята. Я думаю, что сделал мой вопрос слишком сложным. Как насчет того, чтобы сделать это проще ..

Если у меня есть переменная javascript:

var abc = "McDonald\'s";
var bcd = "I need a slash \\ ";
var cde = "save the double quote \"";

как я могу раздеться? какое регулярное выражение я должен использовать?

Ответы [ 5 ]

8 голосов
/ 25 октября 2010

На самом деле крайне не рекомендуется использовать эту функцию "магические цитаты" , которая вставляет косые черты. Как правило, вы никогда не хотите хранить данные в базе данных в экранированном формате; Вы хотите сделать экранирование и кодирование в выводе.

4 голосов
/ 25 октября 2010

Я бы позаботился о главной проблеме - magic_quotes включен.

Я бы отключил его и использовал бы подходящие методы экранирования в вашей базе данных.

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

Если вы говорите о косых чертах при использовании json_encode(), это происходит по определенной причине.

Используйте JSON-синтаксический анализатор в JavaScript, и вы их не увидите (если что-то другое неправильно их кодирует).

1 голос
/ 30 июля 2013

Попробуйте тоже

function stripslashes (str) {

  return (str + '').replace(/\\(.?)/g, function (s, n1) {
    switch (n1) {
    case '\\':
      return '\\';
    case '0':
      return '\u0000';
    case '':
      return '';
    default:
      return n1;
    }
  });
}
1 голос
/ 25 октября 2010
0 голосов
/ 25 октября 2010

Использование: http://au.php.net/manual/en/function.mysql-real-escape-string.php перед сохранением в базе данных.

Используйте такую ​​пользовательскую функцию перед записью в любой пользовательский интерфейс:

function unescape($string)
{

$search = array("\\x00", "\\n", "\\r", "\\\x1a");

$replace = array("\x00","\n", "\r", "\x1a");

$retString = str_replace($search, $replace, $string);

$search = array("\'", '\\'.'"');

$replace = array(  "'", '"',);

$retString = str_replace($search, $replace, $retString);

$search = array("\\\\");

$replace = array( "\\");

$retString = str_replace($search, $replace, $retString);

return $retString

}
...