猿问

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

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

页面报错输出代码

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

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

撒科打诨
浏览 504回答 3
3回答

紫衣仙女

转义加反斜杠: '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

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

慕容708150

在php内解决 str_replace("'", "/'", $str); 在js里解决,当然如果用户输入`的话,那也会报错。还是在php处理好 var html = `<select><option>Mike's</option></select>`;
随时随地看视频慕课网APP
我要回答