PHP输出$faq['content']至JS时出现未转义换行符错误求助
解决JS字符串字面量未转义换行的错误
这个问题很常见,根源就是你直接把PHP变量输出到JavaScript字符串里时,没有处理其中的特殊字符——比如$faq['content']里的换行、单引号这类符号,直接塞进JS的单引号字符串会破坏语法规则,浏览器自然就报错了。
给你两种可靠的解决办法,优先推荐第一种:
方法一:用json_encode()自动转义(最稳妥)
PHP的json_encode()函数会自动把PHP字符串转换成完全符合JavaScript语法规范的字符串,所有特殊字符(换行、引号、反斜杠等)都会被正确转义,不用你手动处理。修改后的代码如下:
<script> setTimeout(function () { $(".opencxbody").html('<div style="max-height:400px; overflow-y: scroll;">' + <?php echo json_encode($faq['content']); ?> + '</div>'); }, 100); </script>
注意这里json_encode()输出的结果已经自带双引号了,所以不需要再给它加单引号或双引号,直接和前后的HTML字符串拼接就行。
方法二:手动转义特殊字符(适合简单场景)
如果因为某些原因不想用json_encode,可以手动转义单引号和换行符:
- 用
addslashes()转义单引号,避免提前结束JS字符串 - 用
str_replace()把换行符\n替换成JS能识别的\\n
示例代码:
<script> setTimeout(function () { var faqContent = '<?php echo str_replace("\n", "\\n", addslashes($faq['content'])); ?>'; $(".opencxbody").html('<div style="max-height:400px; overflow-y: scroll;">' + faqContent + '</div>'); }, 100); </script>
不过这种方法只处理了换行和单引号,如果$faq['content']里还有其他特殊字符(比如双引号、反斜杠),还是会出问题,所以优先选第一种方法更省心。
内容的提问来源于stack exchange,提问作者Farid
相关产品推荐
相关产品推荐

