首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$_GET,Ampersand打扰了

$_GET,Ampersand打扰了
EN

Stack Overflow用户
提问于 2013-02-19 14:25:52
回答 4查看 347关注 0票数 0

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

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

上面我想要的是粗体,但遗憾的是,$_ get ' URL‘只会得到"http:// the . is /?q=an“,因为&使它将其解释为URL中一个新变量的开始。

有没有一种方法可以忽略这些符号,这样我的脚本就可以获得我需要它的整个URL?添加到?url=的URL并不在我的控制范围之内,所以大多数工作都是这样的,但有些工作确实包含了可怕的&。在阅读了关于堆栈溢出的问题之后,我并没有抱太大希望。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-19 14:29:27

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

代码语言:javascript
复制
$page = str_replace("url=", "", $_SERVER['QUERY_STRING']);

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

票数 4
EN

Stack Overflow用户

发布于 2013-02-19 14:27:26

使用urlencode()

代码语言:javascript
复制
$get_url = urlencode('http://this.is/?q=an&?example=url');
$url = 'http://mysite.com/?url=' . $get_url;
票数 1
EN

Stack Overflow用户

发布于 2013-02-19 14:36:49

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

代码语言:javascript
复制
$query = $_SERVER['QUERY_STRING'];
$pos = strpos($query, "url=");
if ($pos !== false) {
    $url = substr($query, $pos + 4);
}

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14959830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档