Как проанализировать элементы массива URL-адреса

#php #html #arrays

#php #HTML #массивы

Вопрос:

У меня есть URL-адрес, который выглядит следующим образом:

 http://localhost/projectcode12may2014/ampanel/index.php?rel=common_listingamp;module=companyamp;field%5B]=addressamp;adv_operation%5B]=camp;value%5B]=sectoramp;query_type%5B]=ANDamp;submit=Submit
 

В декодированном виде это выглядит так:

 http://localhost/projectcode12may2014/ampanel/index.php?rel=common_listingamp;module=companyamp;field[]=addressamp;adv_operation[]=camp;value[]=sectoramp;query_type[]=ANDamp;submit=Submit
 

Я пытаюсь проанализировать этот URL-адрес и получить значения field[] , adv_operation[] и query_type[] в виде массивов, но я просто Array записываю текст, если пытаюсь проанализировать эти поля. Я использую parse_url() и parse_str() для синтаксического анализа.
Может кто-нибудь предложить подходящий метод для этого?
Заранее спасибо.

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

1. Почему у вас квадратные скобки в URI? попробуйте использовать ключи key=valueamp; без них.

2. Быстрый вопрос, просто чтобы уточнить: как вы печатаете результаты своего синтаксического анализа? (если вы echo его редактируете, он всегда будет печатать «Массив», поскольку это то, что возвращают массивы при приведении к строке)

Ответ №1:

Вероятно, вы неправильно отображаете раздел массива, потому что ваш метод должен работать.

Вы используете parse_url для извлечения сегмента URL-адреса «запрос», затем используете parse_str для загрузки его в переменную.

Пример:

 $url = "http://example.com/page.php?a=appleamp;b=bananaamp;z=zebraamp;arr[]=1amp;arr[]=2";
$query = parse_url($url, PHP_URL_QUERY);

var_dump($query);
// string(40) "a=appleamp;b=bananaamp;z=zebraamp;arr[]=1amp;arr[]=2"

parse_str($query, $parsed);
var_dump($parsed);
/*
array(4) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["z"]=>
  string(5) "zebra"
  ["arr"]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
}
*/

// $parsed["arr"] is now array(1, 2);
 

Ответ №2:

Ниже приведены выходные форматы параметра array:

 $url = '<your_url>';
$parsedUrl = parse_url($url, PHP_URL_QUERY);
parse_str($parsedUrl);

echo $field;
/*
outputs as:
Array
*/

echo $field[0];
/*
outputs as:
address
*/

print_r($field);
/*
outputs as:
Array
(
    [0] => address
)
*/