0

尝试使用 $_GET['url'] 变量从 URL 中获取数据:

http://mysite.com/?url= http://this.is/?q=an&?example=url

我上面想要的是粗体,但遗憾的是 $_GET['url'] 只会得到“http://this.is/?q=an”,因为 & 使它解释为新变量的开头网址。

有没有办法忽略与号,以便我的脚本可以获取我需要的整个 URL?附加到 ?url= 的 URL 不在我的控制范围内,所以大多数工作都包含可怕的 &。在阅读了有关 Stack Overflow 的问题后,我并没有抱太大希望:(

4

4 回答 4

4

如果您完全无法控制查询字符串上的参数(无论出于何种原因),您也可以通过手动解析$_SERVER['QUERY_STRING']变量来做到这一点,例如

$page = str_replace("url=", "", $_SERVER['QUERY_STRING']);

当然,如果可能的话,您应该使用其他人发布的答案对其进行编码。

于 2013-02-19T14:29:27.520 回答
1

采用urlencode()

$get_url = urlencode('http://this.is/?q=an&?example=url');
$url = 'http://mysite.com/?url=' . $get_url;
于 2013-02-19T14:27:26.177 回答
0

如果您无法控制查询字符串,则可以使用

$query = $_SERVER['QUERY_STRING'];
$pos = strpos($query, "url=");
if ($pos !== false) {
    $url = substr($query, $pos + 4);
}

此代码返回之后的所有内容url=

如果有可能,您应该对 url 进行编码urlencode以创建一个干净的 url。如果你不这样做,你最终会得到一个服务器错误,带有奇怪的 url,你不能传递多个 url(因为 url= 之后的所有内容都被解释为 url)

于 2013-02-19T14:36:49.333 回答
0

这是经过测试的代码:

if (!empty($_GET['url'])) {
    echo $_GET['url'].'<br />';
}
$url = urlencode('http://this.is/?q=an&?example=url');
echo '<a href="http://mysite.com/?url='.$url.'">LINK</a>';

希望它会帮助你。

于 2013-02-19T14:52:24.567 回答