#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
)
*/