尝试使用$ _GET ['url']变量从网址抓取数据:
http://mysite.com/?url=的 http://this.is/?q=an&?example=url
上面我想要的是粗体,但遗憾的是$ _GET ['url']只会获得“http:// this.is/?q=an”,因为&使它将其解释为URL中新变量的开头。
有没有办法忽略&符号,所以我的脚本可以获取我需要的整个URL?附加到?url =的URL不在我的限制范围内,因此控制所以大多数工作,但有些确实包含可怕的&amp ;.在阅读Stack Overflow上的问题后,我并没有抱太大希望:(
答案 0 :(得分:4)
如果您完全无法控制查询字符串上的参数(无论出于何种原因),您也可以通过手动解析$_SERVER['QUERY_STRING']
变量来完成此操作,例如
$page = str_replace("url=", "", $_SERVER['QUERY_STRING']);
当然,如果可能的话,你应该使用其他人发布的答案对其进行编码。
答案 1 :(得分:1)
$get_url = urlencode('http://this.is/?q=an&?example=url');
$url = 'http://mysite.com/?url=' . $get_url;
答案 2 :(得分:0)
如果无法控制查询字符串,可以使用
$query = $_SERVER['QUERY_STRING'];
$pos = strpos($query, "url=");
if ($pos !== false) {
$url = substr($query, $pos + 4);
}
此代码在url=
如果您有可能,则应使用urlencode
对网址进行编码以创建一个干净的网址。
如果你不这样做,你最终会得到服务器错误,有奇怪的网址,你不能传递多个网址(因为url =之后的所有内容都被解释为网址)
答案 3 :(得分: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>';
希望它会对你有所帮助。