Php 使用_GET检索整个URL,即使使用了符号

Php 使用_GET检索整个URL,即使使用了符号,php,url,get,Php,Url,Get,我制作了一个快速脚本来检索和解析XML。它只是供内部使用,我认为将提要URL附加到脚本地址将是初始化脚本的方便方法 www.example.com/feed_analyzer.php?url=www.example.com/an_xml_feed.xml 然后我简单地抓取URL if (isset($_GET['url'])) { $xml_url = $_GET['url'] } …检索$xml\u url处的文件,解析等 一切都很好,直到这个URL出现了令人讨厌的参数: www.exa

我制作了一个快速脚本来检索和解析XML。它只是供内部使用,我认为将提要URL附加到脚本地址将是初始化脚本的方便方法

www.example.com/feed_analyzer.php?url=www.example.com/an_xml_feed.xml

然后我简单地抓取URL

if (isset($_GET['url'])) {
  $xml_url = $_GET['url']
}
…检索$xml\u url处的文件,解析等

一切都很好,直到这个URL出现了令人讨厌的参数:

www.example.com/an_xml_feed.xml?foo=bar&rice=chips

这当然给我留下了URL“www.example.com/an_xml_feed.xml”

我已使用以下笨拙的代码成功地“修补”了整个URL:

if (isset($_GET['url'])) {
  foreach($_GET as $key => $value){
   $got .= "&".$key."=".$value;
  }
  $xml_url = ltrim($got,'&url=');
}

有人能推荐一种更优雅的方法吗。

urlencode()
是一种方法:)

urlencode()
是一种方法:)

您可以直接使用它来获取整个查询url:

ltrim($_SERVER['QUERY_STRING'], 'url=');

您可以直接使用它来获取整个查询url:

ltrim($_SERVER['QUERY_STRING'], 'url=');

像这样试试

if (isset($_GET['url'])) {
  $query_string = $_SERVER['QUERY_STRING'];
  if (!empty($query_string)) {
     list($key, $xml_url) = explode('url=', $query_string); 
     echo $xml_url;
  }

}像这样试试

if (isset($_GET['url'])) {
  $query_string = $_SERVER['QUERY_STRING'];
  if (!empty($query_string)) {
     list($key, $xml_url) = explode('url=', $query_string); 
     echo $xml_url;
  }

}

您当然可以将任何您喜欢的内容作为请求获取参数提交,但是您需要
urlencode()
它,否则它将与URL解析本身发生冲突。您当然可以将任何您喜欢的内容作为请求获取参数提交,但是您需要
urlencode()
它,否则它将与URL解析本身发生冲突。好的,但以何种方式?好的,但以何种方式?优雅的单线解决方案已测试并运行,非常感谢优雅的单线解决方案已测试并运行,非常感谢