如何解析具有嵌入式'&'?的查询字符串?

时间:2012-02-03 06:36:37

标签: php query-string

在PHP中,我如何解析以下查询字符串以获取整个变量“url”,该变量应包含其后的所有内容?

http://www.mydomain.com/?c=log&m=index&url=https://www.facebook.com/logout.php?next=http%3A%2F%2Fwww.anotherdomain.com&access_token=AAACPpB5pr5gBAJLFZBGaU6SM7UMlGQob7QUBf3aI0DIHrHWtcTGHirS0UrwwDDZBEiIQHeWfkOVCFbEXrFt6TdVlbPrXmV6xyPDI9pPQZDZD

$_GET['url']放弃了“www.anotherdomain.com”之后的所有内容,因为它遇到了另一个“&”。

问题是'url'是由Facebook提供的。 如果我urlencode整个字符串,它将变为无效。 我如何解析'url'以编程方式只对需要更改的部分进行urlencode?

2 个答案:

答案 0 :(得分:2)

在传递之前,网址应该是urlencode d,否则它是一个无效的查询字符串参数。

答案 1 :(得分:2)

尝试这样的事情

 $link = "http://www.mydomain.com/?c=log&m=index&url=";
 $link .= rawurlencode('https://www.facebook.com/logout.php?next=http%3A%2F%2Fwww.anotherdomain.com');
 $link .= '&access_token=AAACPpB5pr5gBAJLFZBGaU6SM7UMlGQob7QUBf3aI0DIHrHWtcTGHirS0UrwwDDZBEiIQHeWfkOVCFbEXrFt6TdVlbPrXmV6xyPDI9pPQZDZD';

检索数据使用

  $url_get = rawurldecode($_GET['url']);