Как мне разобрать строку запроса со встроенным символом '&'? - PullRequest
0 голосов
/ 03 февраля 2012

В 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 ]

2 голосов
/ 03 февраля 2012

попробуйте что-то вроде этого

 $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']); 
2 голосов
/ 03 февраля 2012

URL должен быть urlencode d перед передачей, в противном случае это недопустимый параметр строки запроса.

...