[英]How to decode an URL for JavaScript?
解码以下URL以与JavaScript结合使用的最佳方法是什么?
网址:
https://www.example.com/post.php?v=1&text=it's-me&20hello%0Aworld%0A
当前,如果URL中存在'
,则将导致错误,并且也不会解释换行符(空白行)。
码:
<?php
$postText = $_GET["text"];
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script type="text/javascript">
var options = {
prefilltext: '<?php echo $postText;?>',
};
</script>
</body>
</html>
问题不在于您必须解码url,而是必须转义单引号以避免javascript语法错误。
prefilltext: 'a'b' // error
prefilltext: 'a\'b' // ok
要逃脱,您可以使用
echo str_replace('\'', '\\\'', $myString);
由于双引号不是合法的URL字符,而是单引号,因此您可以用双引号来描述javascript字符串,因此应该是安全的。 字符串中不应包含双引号,因为它不是合法的URL字符,而单引号是合法的URL字符。
var options = {
prefilltext: "<?php echo $postText;?>",
};
可以为使用PHP的urlencode()
在URL中的字符串做好适当的准备,尽管由于其中已经包含%20
,看起来它可能已经被编码了。
您可能也对PHP的addslashes()
函数感兴趣。
尽管在这种情况下可以使用addslashes
,但我更愿意采取更强大的措施并通过JSON运行所有内容。
<?php
var $mystring = "A really complex string\r\nWith line breaks";
?>
<script>
var jsstring = <php echo json_encode($mystring); ?>;
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.