如果存在#,则会修剪网址

时间:2015-01-27 21:56:16

标签: php

我已经读过这个:What does /#!/ mean in URL?所以我知道#是一个片段分隔符,但是我很难用$ _GET一个URL来显示在后续页面上,#存在

我有一个php页面,它将用户输入和URL发送到显示它的另一个页面。

<?php echo $_GET["url"]; ?>

包含变量的网址如下所示......

http://website.com/qr/index.php?url=http://www.example.com&many=false&set=false

http://www.example.com会显示。

而包含像这样的片段的网址......

http://website.com/qr/index.php?url=http://www.example.com/#fragment&many=false&set=false

什么也没有显示。

我无法使用$ _POST。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

你应该URL encode你在URL中放置的参数,特别是因为它也是一个URL(意味着它很可能包含在URL上下文中具有特殊含义的字符,例如#/)。如果您使用Javascript将URL参数放入其中,则可以使用encodeURIComponent执行此操作。如果您使用PHP添加该网址参数,则为urlencode

从第一个链接开始,英镑符号属于&#34;不安全字符&#34;从作者那里获得这个进一步的建议(强调我的):

  

由于各种原因,某些字符会出现在网址中被误解的可能性。 这些字符也应始终编码

那&#34;不安全&#34;指定来自RFC 1738,具体说明英镑字符(再次强调我的):

  

所有不安全的字符必须始终在URL中编码。对于      例如,角色&#34;#&#34;必须在URL 中编码,即使在      通常不处理片段或锚点的系统      标识符,以便将URL复制到另一个系统中      确实使用它们,没有必要更改URL编码。

答案 1 :(得分:1)

您应该使用urlencoderawurlencode。否则所有在'#'之后都是片段的一部分,并且你可能会遇到一些问题。