【发布时间】:2011-01-03 17:13:54
【问题描述】:
在与处理单引号和特殊字符的数据库交互时,我遇到了这个相当经典的问题。在 PHP 中,我用另一个单引号和正则表达式语法字符用 preg_quote 转义单引号,它们作为专业人士工作。问题在于 javascript,在我的脚本中有一些点,我在运行时直接将数据库变量传递到 javascript 以构建它,这就是它正在分解的地方。
以下是一个例子:
var href = "region_view.php?min_row=1&max_row=25®_name=^*&new''region' blah£"&order_by=reg_name asc";
请注意 reg_name 变量,它在 firebug 控制台中给我一个错误,即左侧分配无效。第一个问题是,是否有像 eval 这样的函数或者默认情况下可以处理这些单双引号的函数? 第二个问题是,这些类型的事情是在整个应用程序中完成的。回顾每个 javascript 行并处理单引号和双引号将是一项艰巨的任务。有没有像全局这样的东西可以解决这个问题。
我的问题可能听起来很愚蠢,但我用谷歌搜索,找不到任何东西,希望有人能找到解决方案。
谢谢,
【问题讨论】:
-
很抱歉造成混淆。不,我不是在 javascript 中构建 SQL,这也不是正则表达式。这是一个包含许多特殊字符的测试区域名称,只是为了看看它在哪里分解,所有这些字符在进入之前都会被转义但是 ^*&new''region' blah£" 是一个区域名称,并且在构建这个 javascript , reg_name 变量具有 db 中存在的区域名称的值。这就是为什么 reg_name=^*&new''region' blah£"。我可以在 fetch 上再次使用 PHPs 函数来转义 javascript 的特殊字符,但使用相同的变量来显示输入框中的数据。那些也会得到\'。
标签: javascript database double quotes