如何通过分隔键和值将URL的查询部分提取到不同的数组中?



我得到了这个url:http://example.com/cat/subcat?var1=value1&var2=值2

我需要将查询部分的键和值抓取到单独的数组中。因此$query_string数组应该包含以下值:

var1=value1&var2=value2

然后,我希望$keys数组具有以下值:var1、var2、

然后,我希望$values数组具有以下值:值1,值2

最后,我需要回显$keys数组和$values数组的每个值。

这是我失败的尝试:

<?php
$url = 'http://example.com/cat/subcat?var1=value1&var2=value2';
var_dump(parse_url($url));
$scheme = parse_url($url, PHP_URL_SCHEME);
$user = parse_url($url, PHP_URL_USER);
$pass = parse_url($url, PHP_URL_PASS);
$host = parse_url($url, PHP_URL_HOST);
$port = parse_url($url, PHP_URL_PORT);
$path = parse_url($url, PHP_URL_PATH);
$query_strings = parse_url($url, PHP_URL_QUERY);
$fragment = parse_url($url, PHP_URL_FRAGMENT);
echo $parsed_url = $scheme .'://' .$user .$pass .$host .$port .$path .'?' .$query_strings .$fragment;
echo '<br>';
//var1=value1&var2=value2
$query_strings_array = array();
$query_strings_array[] = implode("&", $query_strings);//Warning: implode(): Invalid arguments passed in C:xampphtdocsTemplatesPagination_Template.php on line 311
foreach ($query_strings_array as $key) 
{
$query_strings_keys_array[] = implode("=", $query_strings);//Warning: implode(): Invalid arguments passed in C:xampphtdocsTemplatesPagination_Template.php on line 315
$query_strings_keys[] = $key;
$query_strings_values[] = $value; //Notice: Undefined variable: value in C:xampphtdocsTemplatesPagination_Template.php on line 317

echo $query_strings_keys[-1];
echo $query_strings_values[-1];
}
?>

错误:警告:内爆((:在C:\examplep\htdocs\Templates\Pagination_Template.php第311行传递的参数无效警告:内爆((:在C:\examplep\htdocs\Templates\Pagination_Template.php第315行传递的参数无效注意:未定义的变量:第317行C:\examplep\htdocs\Templates\Pagination_Template.php中的值

我还提到了我在上面代码的注释中得到的错误,以指示我的代码中的错误行。

首先需要隔离查询字符串。然后使用parse_str将查询字符串分隔为键/值对,然后用array_keysarray_values获得两个单独的数组。

<?php
// example code
$url = 'http://example.com/cat/subcat?var1=value1&var2=value2';
$qs = str_replace(explode("?",$url)[0]."?", '', $url);
parse_str($qs, $arr);
$keys = array_keys($arr);
$values = array_values($arr);
print_r($keys);
print_r($values);

示例:https://www.tehplayground.com/9rNqYnVvIdFLsr3d

Array
(
[0] => var1
[1] => var2
)
Array
(
[0] => value1
[1] => value2
)

使用parse_url获取查询字符串,使用parse_str获取每个参数。

<?php
$url = 'http://example.com/cat/subcat?var1=value1&var2=value2';
// Get query string from the URL
$query_string = parse_url($url, PHP_URL_QUERY);
// Split the query string into individual parameters and return it in $arr
parse_str($query_string, $arr);
// Store keys i.e. parameter names in $keys
$keys = array_keys($arr);
// Store values i.e. parameter values in $values
$values = array_values($arr);
// print
print_r($keys);
print_r($values);
?>

最新更新