PHP URL解码GET

Alb*_*haw 3 php get decode urlencode urldecode

我一直在使用$ _get编码的URL变量进行URL解码.

我面临的当前问题是我有一个像这样编码的URL: blah.php?url=http%3A%2F%2Fm.youtube.com%2F#/watch?feature=player_embedded&v=zd7c5tQCs1I&desktop_uri=%2Fwatch%3Fv%3Dzd7c5tQCs1I%26feature%3Dplayer_embedded

我不确定这是什么样的编码,有人可以帮助我吗?当我在这上面只使用"urldecode"它就会返回m.youtube.com

编辑:我的问题不是url解码不工作,如果我手动输入这个编码的URL并使用urldecode(),但是当这个编码的url在实际的页面url并且我使用_GET函数然后我尝试解码它,它会在URL中的"#"之后对所有内容进行条带化处理.

<?php print urldecode($_GET["url"]);?>

它回来了

"http://m.youtube.com/"

代替

"http://m.youtube.com/#/watch?feature=player_embedded&v=zd7c5tQCs1I&desktop_uri=/watch?v=zd7c5tQCs1I&feature=player_embedded"

我认为问题是英镑符号没有编码,如果我刷新页面它会剥掉磅唱歌及其后的所有内容,那么我该如何解决这个问题呢?即使有一个英镑符号,我还可以从"GET"中检索信息吗?(#)

T.T*_*dua 9

问题是完整链接有多个=符号,并且浏览器无法确定其他=符号仅涉及url=参数.在你的情况下,首先,你需要在链接给url=参数之前使用函数:

========================= 1) JAVASCRIPT ======================
<script type="text/javascript">
    var mylink = encodeURIComponent('http://testest.com/link.php?name=sta&car=saab');
    document.write("http://yoursite.com/url=" + mylink);
</script>


========================= 2)or PHP ===========================
<?php
    $mylink = 'http://testest.com/link.php?name=sta&car=saab';
    echo 'http://yoursite.com/url='.urlencode($mylink);
?>
Run Code Online (Sandbox Code Playgroud)

所以,你的输出(url参数)将是这样的

http://yoursite.com/url=http%3A%2F%2Ftest.com%2Flink.php%3Fname%3Dsta%
Run Code Online (Sandbox Code Playgroud)

所以,url参数将获取编码的url.之后,你的.php文件需要解码那个"url"参数 -

<?php
$varr = $_GET['url'];
$varr = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($varr)); 
$varr = html_entity_decode($varr,null,'UTF-8');
echo $varr;
?>
Run Code Online (Sandbox Code Playgroud)

这将给你正确的价值


Ale*_*dru 8

我在php.net上读到了urldecode函数,他们说超级全局$ _get已经被解码了,ex:"超级全局$ _GET和$ _REQUEST已经被解码.在$ _GET或$ _REQUEST中的元素上使用urldecode()可能会有意外和危险的结果."