如何编码,发送查询和检索网址

I am trying to pass a url for creating an iframe as a parameter of a query string. Because the url that I am passing contains an ampersand, I encode the url with 'urlencode' then append it to the query string.

<?php
$url = "http://www.somesite.com/index.php?option=content&view=article&id=1234:some+article";
$url_encoded = urlencode($url);
?>

<a href="http://www.mysite.com/external_article_iframe/?url=<?php echo $url_encoded ?>" target="_blank"></a>

On the page where I want to create the iframe, I retrieve the url parameter using the $_GET variable.

<?php
$iframe_source = $_GET[$url];
?>

<iframe id="external-link-frame" src="<?php echo $iframe_source ?>"></iframe>

However $_GET only retrieves the part of the parameter value up to the encoded ampersand.

<?php echo $_GET[$url]; //outputs http://www.somesite.com/index.php?option=content ?>

What must I do in order to send the entire url including the parameters that are part of its own query string.

UPDATE: I am able to do it by encoding the url twice

urlencode(urlencode($url));

Take a look at: https://stackoverflow.com/a/2433211/1359529

I think rawurlencode() will encode the ampersands too.

http://us3.php.net/manual/en/function.rawurlencode.php

I believe, how you append it, the $_GET function thinks that the ampersand signs are signifying new values to get. I bet if you did after that $iframe_view = $_GET[$view] it will output article.

If you want it to get the full URL, I think it's best to encode by replacing & signs with something else and then once you get the url, then replace them back to & signs.