Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向数组的PHP url_Php_Arrays_Url - Fatal编程技术网

指向数组的PHP url

指向数组的PHP url,php,arrays,url,Php,Arrays,Url,我从网络日志中找到了这些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 如何在PHPso中转换数组中的URL我将有一个这样的数组 array( 'page' => array( 's' => 194,

我从网络日志中找到了这些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
如何在PHPso中转换数组中的URL我将有一个这样的数组

array(
 'page' => array(
   's' => 194,
   'client' => 151678
   'm' => 'a4a',
   'v' => 1,
   'g' => 54
 )
 etc..
)

然后,我可以循环到该数组以查找重复项或正确验证信息。

PHP有一个本机函数,该函数。您可以像这样使用它:

parse_str($_SERVER['QUERY_STRING'], $outputArray);
这正是您所需要的。

使用,您可以将URL解析为关联数组。在结果数组中,您可以得到查询部分。然后,您可以使用将查询部分解析为新数组。

您可以执行以下操作:

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);

这里的示例

可能有更好的方法来实现这一点,但这就是我想到的

<?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);

?>


根据您的问题,假设路径始终为
/page
,则包含解析URL的数组不能有多个
page
索引,因此您应该使用数字索引

试试这个:

$urls_parsed = array();
foreach ($url_strings as $url_string) {
    $url = parse_url($url_string);
    $urls_parsed[] = parse_str($url['query']);
}
$url\u strings
是一个数组,包含所有要以字符串格式解析的url。
$url\u parsed
是结果数组,其中包含按您请求的格式解析的url。

使用parse\u url函数,如

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>

从查询中,您可以轻松地将其拆分为(键、值)paira。希望这有帮助。:

这是首选方法,因为它支持任何以&和=分隔的标准字符串。对卷曲反应也很有效
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)