数据库中用户录入的字符串为Mike's,PHP输出显示在网页中JS会报语法错误,提示Uncaught SyntaxError: Unexpected identifier,明显是多了一个'导致。
页面报错输出代码
<script>
var html = '<select><option>Mike's</option></select>';
</script>
明显这里的引号和js冲突了,可以用双引号来临时解决,但是有用户也会录入双引号的信息,所以这里有没有什么好的方案可以彻底解决该问题呢?
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
转义加反斜杠:
'Mike\'s'
也可以用双引号:
"Mike's"
双引号在单引号字符串中不用转义,单引号在双引号字符串中不用转义。
但要注意单双引号有些许不同,比如双引号中可以直接使用变量:
$a='Mike';
"$a's"; //Mike's
还有双引号中可以使用更多的转义字符,比如\n
换行符等。
用户输入不用处理,因为PHP内部已经处理过,其中的单引号是字符,不会和作为语言结构的单引号配对的。
$a='Mike\'s'; //字符串值是Mike's,并不是Mike\'s,转义只是为了和语言结构的单引号区别开。用户输入的结果也是这样的。
$b="Mike\"s"; //双引号也是类似的,字符串值是Mike"s而不是Mike\"s
$c="something $b"; //所以再次使用时不需要处理,$b中的双引号并不会和代表字符串的双引号有冲突。
如果你是要放在js代码中,可以使用addslashes
函数处理,具体请自行查看文档。
梦里花落0921
TA贡献1772条经验 获得超6个赞
<script>
var html = '<select><option>Mike\'s</option></select>';
</script>
慕容708150
TA贡献1831条经验 获得超4个赞
在php内解决
str_replace("'", "/'", $str);
在js里解决,当然如果用户输入`的话,那也会报错。还是在php处理好
var html = `<select><option>Mike's</option></select>`;
- 3 回答
- 0 关注
- 503 浏览
添加回答
举报
0/150
提交
取消