1

因此,当我将数据保存到数据库中时,PHP 会在单引号或双引号上添加一个 \。那很好。

但是,当使用 json_encode() 将数据传回客户端时;像 McDonald's 这样的 TEXT 在 DB 中存储为 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 \"";

我怎样才能剥离 \' ?我应该使用什么正则表达式?

4

5 回答 5

8

实际上,强烈建议不要使用这种插入斜线的“魔术引号”功能。通常,您永远不想以转义格式将数据存储在数据库中。你想在输出中进行转义和编码。

于 2010-10-25T01:28:56.913 回答
4

我会处理主要问题 -magic_quotes已启用。

我会禁用它并对您的数据库使用适当的转义方法。

那么你就不必担心 PHP 会神奇地添加斜杠。

如果您在使用 时谈论斜线json_encode(),那么这样做是有原因的。

在 JavaScript 中使用JSON 解析器,您将看不到它们(除非其他东西对它们进行了不正确的编码)。

于 2010-10-25T01:29:14.947 回答
1

是的。 http://phpjs.org/functions/stripslashes:537

于 2010-10-25T01:28:33.137 回答
1

也试试这个

function stripslashes (str) {

  return (str + '').replace(/\\(.?)/g, function (s, n1) {
    switch (n1) {
    case '\\':
      return '\\';
    case '0':
      return '\u0000';
    case '':
      return '';
    default:
      return n1;
    }
  });
}
于 2013-07-30T06:20:22.523 回答
0

在存储到数据库之前使用: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

}
于 2010-10-25T02:10:41.230 回答