我已经读过这个: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://website.com/qr/index.php?url=http://www.example.com/#fragment&many=false&set=false
什么也没有显示。
我无法使用$ _POST。
感谢您的帮助。
答案 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)
您应该使用urlencode或rawurlencode。否则所有在'#'之后都是片段的一部分,并且你可能会遇到一些问题。