标签:php
我有一个简单的问题.我需要从网址获取参数值.
网址是这样的:
http://www.example.com/index.php?someUrl=http://www.example.com/folder/index.htm#>newwnd=false
我需要获取php中someUrl的值.
我试过的
$_GET['someUrl'];
我得到的输出是http://www.example.com/folder/index.htm
输出需要得到:
http://www.example.com/folder/index.htm#>newwnd=false
注意:我无法将#之后的URL分隔为新参数.
我希望我能解决这个问题.
编辑:根据宝贵的反馈意见,我已经在将字符串作为URL参数发送之前对其进行了编码.
我通过javascript函数encodeURIComponent进行了编码
现在,URL如下所示:
http://www.example.com/index.php?someUrl=http%3A%2F%2Fexample.com%folder%2Ftallyhelp.htm%23%253Cid%3D18025%253E%253Enewwnd%3Dfalse
通过urldecode函数在php中解码后,我得到的结果为http://www.example.com/folder/index.htm#\u0026gt;newwnd=false
‘id’从结果中删除.
解决方法:
您的问题是,如果您对页面的请求是这样的:
http://www.example.com/index.php?someUrl=http://www.example.com/folder/index.htm#>newwnd=false
那么#号后面的是锚标记,这意味着后面的不是$_GET的参数,它只是锚标记.因此您需要对#(以及其他一些可能引起更多问题的奇怪字符)进行编码
因此,如果您设法像这样对页面进行请求:
http://www.example.com/index.php?someUrl=http%3A%2F%2Fwww.example.com%2Ffolder%2Findex.htm%23%3Cid%3D18025%3E%3Enewwnd%3Dfalse
那么您将可以使用$_GET [‘someUrl’];获取您想要的值,因为#将被编码(其他字符也是如此)
那么如何提出这样的要求?只需使用urlencode对您的someUrl参数进行编码.
看看它怎么运作
echo urlencode('http://www.example.com/folder/index.htm#>newwnd=false');
因此,在对链接进行编码之后,指向该页面的链接将像这样
如您所见,#将被编码,这将阻止它与请求的URL混淆,并且您将能够通过$_GET [‘someUrl’]获得此字符串.
OP的新编辑的更新:
标签:php
来源: https://codeday.me/bug/20191118/2031136.html