从 PHP 代码打印带有单引号的 Javascript 字符串
我有以下从 PHP 打印的脚本。如果有人在描述中使用单引号,则会显示缺少 javascript 错误;因为它认为字符串终止了。
print "<script type=\"text/javascript\">\n
var Obj = new Array();\n
Obj.title = '{$_REQUEST['title']}';
Obj.description = '{$_REQUEST['description']}';
</script>";
表单在此页面上发布帖子,标题和描述来自文本框。此外,我无法在 {$_REQUEST['title']} 周围放置双引号,因为它显示语法错误。我该如何处理这个问题?
I have following script printed from PHP . If some one has a single quote in description it shows javascript error missing ; as it thinks string terminated .
print "<script type=\"text/javascript\">\n
var Obj = new Array();\n
Obj.title = '{$_REQUEST['title']}';
Obj.description = '{$_REQUEST['description']}';
</script>";
Form does a post to this page and title and description comes from textbox.Also I am unable to put double quotes around {$_REQUEST['title']} as it shows syntax error . How can I handle this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一种更干净(更安全)的方法(imo):
a more clean (and secure) way to do it (imo):
您还需要小心换行之类的事情。 JavaScript 字符串不能跨越多行。 json_encode 是正确的方法。 (由于代码示例,将此添加为新答案。)
编辑(2016 年 11 月 15 日): 将
JSON_HEX_TAG
参数添加到json_encode
调用中。我希望这可以解决在元素中将数据写入 JavaScript 时的所有问题。有一些相当烦人的极端情况。
You also need to be careful with things like line breaks. JavaScript strings can't span over multiple lines. json_encode is the way to go. (Adding this as new answer because of code example.)
Edit (2016-Nov-15): Adds
JSON_HEX_TAG
parameter tojson_encode
calls. I hope this solves all issues when writing data into JavaScript within<script>
elements. There are some rather annoying corner cases.使用字符串连接运算符:
http://php.net/manual/en/language .operators.string.php
Use the string concatenation operator:
http://php.net/manual/en/language.operators.string.php