0

我正在尝试传递一个用于创建 iframe 的 url 作为查询字符串的参数。因为我传递的 url 包含一个 & 符号,所以我使用 'urlencode' 对 url 进行编码,然后将其附加到查询字符串中。

<?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>

在我要创建 iframe 的页面上,我使用 $_GET 变量检索 url 参数。

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

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

但是 $_GET 只检索参数值的一部分,直到编码的 & 符号。

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

我必须做什么才能发送整个 url,包括作为其自身查询字符串一部分的参数。

更新:我可以通过对 url 进行两次编码来做到这一点

urlencode(urlencode($url));

看看:https ://stackoverflow.com/a/2433211/1359529

4

2 回答 2

0

我认为 rawurlencode() 也会对&符号进行编码。

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

于 2012-06-05T23:50:40.430 回答
0

我相信,您如何附加它, $_GET 函数认为与符号表示要获取的新值。我敢打赌,如果你在那之后做了 $iframe_view = $_GET[$view] 它会输出文章。

如果您希望它获得完整的 URL,我认为最好通过将 & 符号替换为其他内容来进行编码,然后在获得 url 后将它们替换回 & 符号。

于 2012-06-05T23:52:30.497 回答