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

发布于 2022-09-07 20:30:30 字数 341 浏览 15 评论 0

数据库中用户录入的字符串为Mike's,PHP输出显示在网页中JS会报语法错误,提示Uncaught SyntaxError: Unexpected identifier,明显是多了一个'导致。

页面报错输出代码

<script>
    var html = '<select><option>Mike's</option></select>';
</script>

明显这里的引号和js冲突了,可以用双引号来临时解决,但是有用户也会录入双引号的信息,所以这里有没有什么好的方案可以彻底解决该问题呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

走野 2022-09-14 20:30:30

转义加反斜杠:

'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函数处理,具体请自行查看文档。

安静 2022-09-14 20:30:30
<script>
    var html = '<select><option>Mike\'s</option></select>';
</script>
‘画卷フ 2022-09-14 20:30:30

在php内解决

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

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

var html = `<select><option>Mike's</option></select>`;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文