PHP — Как проанализировать внешний URL для поиска неизвестного параметра get

#php

#php

Вопрос:

Я пытаюсь создать скрипт, который может находить и идентифицировать идентификатор партнера Amazon по URL-адресу.

Я знаю, что идентификатор партнера появляется после параметра «amp;tag=», но его местоположение в URL-адресе не всегда соответствует. Иногда он находится посередине:

 http://www.amazon.com/gp/goldbox?amp;tag=adamcarolla09-20amp;camp=217705amp;creative=406565amp;linkCode=ur1amp;adid=1S1WPEJM5M1Y1RRW2875amp;
  

Иногда это в конце:

 http://www.amazon.com/?_encoding=UTF8amp;camp=1789amp;creative=9325amp;linkCode=ur2amp;tag=schlockmercenary
  

Как я могу написать скрипт, который просматривает URL-адрес и возвращает только тег, независимо от его позиции в строке?

Ответ №1:

Вы можете использовать PHP parse str:

 <?php
    // ...
    parse_str($url, $output);
    echo $output['tag'];
?>
  

Комментарии:

1. Кому-нибудь это может помочь: всегда не забывайте передавать второй параметр в parse_str() , иначе вы автоматически введете кучу переменных в локальную область видимости. Это плохо по очевидным причинам

Ответ №2:

Сделайте это:

 $tag = strstr($url, "tag=");
$tag = substr($tag, 4, strlen($tag) -4 -strlen(strstr($tag, "amp;")));
$tag = urldecode($tag);
  

Комментарии:

1. При этом не анализируются возможные специальные символы URL