URL-адрес PHP для массива
У меня есть эти URL-адреса из веб-журнала:
http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54
http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97
Как я могу преобразовать этот URL-адрес в массив в PHPso, у меня будет массив вроде этого
array(
'page' => array(
's' => 194,
'client' => 151678
'm' => 'a4a',
'v' => 1,
'g' => 54
)
etc..
)
а затем я могу петли к этому массиву, чтобы найти дубликаты или правильно проверить информацию.
Ответы
Ответ 1
Там может быть лучший способ сделать это, но это то, что я придумал.
<?php
$url = 'http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54';
$remove_http = str_replace('http://', '', $url);
$split_url = explode('?', $remove_http);
$get_page_name = explode('/', $split_url[0]);
$page_name = $get_page_name[1];
$split_parameters = explode('&', $split_url[1]);
for($i = 0; $i < count($split_parameters); $i++) {
$final_split = explode('=', $split_parameters[$i]);
$split_complete[$page_name][$final_split[0]] = $final_split[1];
}
var_dump($split_complete);
?>
http://codepad.org/xTsAks46
Ответ 2
PHP имеет встроенную функцию для функции parse_str. Вы можете использовать его как:
parse_str($_SERVER['QUERY_STRING'], $outputArray);
Это сделает то, что вам нужно.
Ответ 3
С помощью parse_url()
вы можете проанализировать URL-адрес для ассоциативного массива. В массиве результатов вы получаете среди других часть запроса. Затем вы можете использовать parse_str()
для анализа части запроса в новом массиве.
Ответ 4
Предполагая из вашего вопроса, что путь всегда будет /page
, массив, содержащий проанализированные URL, не может иметь несколько индексов page
, поэтому вы должны использовать числовые индексы.
Попробуйте следующее:
$urls_parsed = array();
foreach ($url_strings as $url_string) {
$url = parse_url($url_string);
$urls_parsed[] = parse_str($url['query']);
}
$url_strings
- это массив, содержащий все URL-адреса, которые вы хотите проанализировать в строчном формате.
$urls_parsed
- это результирующий массив, содержащий URL-адреса, проанализированные в запрошенном вами формате.
Ответ 5
Используйте функцию parse_url, например
<?php
$url = 'http://username:[email protected]/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
Что даст вам следующий вывод массива
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
И из запроса вы можете легко разделить его на (ключ, значение) paira. Надеюсь, это поможет.:)
Ответ 6
Вы можете сделать:
function convertUrlToArray($url){
$url = str_replace("http://www.domain.com/page?", "", $url);
$urlExploded = explode("&", $url);
$return = array();
foreach ($urlExploded as $param){
$explodedPar = explode("=", $param);
$return[$explodedPar[0]] = $explodedPar[1];
}
return $return;
}
$url1 = convertUrlToArray("http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97");
var_dump($url1);
пример здесь http://codepad.org/KIDKPzaU