Получение целого URL, даже с амперсандами, с помощью _GET - PullRequest
0 голосов
/ 31 мая 2018

Я сделал быстрый скрипт для извлечения и анализа 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_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=');
}

Может кто-нибудь предложить более элегантный подход.

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Вы можете напрямую использовать это, чтобы получить весь URL запроса:

ltrim($_SERVER['QUERY_STRING'], 'url=');
0 голосов
/ 31 мая 2018

Попробуйте вот так

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

}

0 голосов
/ 31 мая 2018

urlencode() это путь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...