【问题标题】:Retrieving whole URL, even with ampersands, using _GET使用 _GET 检索整个 URL,即使使用与号
【发布时间】:2018-05-31 05:59:48
【问题描述】:

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

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

那我就直接抓取网址了……

if (isset($_GET['url'])) {
  $xml_url = $_GET['url']
}

...在 $xml_url 检索文件,解析等。

在这个 URL 带有讨厌的参数之前一切都很好:

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

这当然给我留下了网址“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=');
}

有人可以建议一种更优雅的方法吗?

【问题讨论】:

  • 你当然可以将任何你喜欢的东西作为请求 GET 参数传递,但是你需要urlencode()它,否则它会与解析自身的 URL 发生冲突。

标签: php url get


【解决方案1】:

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

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

【讨论】:

  • 优雅的单线解决方案经过测试和工作,非常感谢
【解决方案2】:

urlencode() 是要走的路:)

【讨论】:

  • 好的,但是以什么方式?
【解决方案3】:

这样试试

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

}

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2021-09-02
    • 2019-08-07
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多