繁体   English   中英

如何为JavaScript解码URL?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM