为了账号安全,请及时绑定邮箱和手机立即绑定

PHP中如何转义带单引号'的字符串?

PHP中如何转义带单引号'的字符串?

PHP
撒科打诨 2019-03-10 16:57:19
数据库中用户录入的字符串为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函数处理,具体请自行查看文档。

查看完整回答
反对 回复 2019-03-18
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

<script>
    var html = '<select><option>Mike\'s</option></select>';
</script>
查看完整回答
反对 回复 2019-03-18
?
慕容708150

TA贡献1831条经验 获得超4个赞

在php内解决

str_replace("'", "/'", $str);

在js里解决,当然如果用户输入`的话,那也会报错。还是在php处理好

var html = `<select><option>Mike's</option></select>`;
查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 503 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信