老爷子88 发表于 2017-4-8 07:15:37

PHP解析URL并得到URL中的参数

<?php
//例举一个URL格式的字符串:
$str = 'http://test.com/testdir/index.php?param1=10&param2=20&param3=30&param4=40&param5=50&param6=60';
//1 用parse_url解析URL,此处是$str
$arr = parse_url($str);
var_dump($arr);
//2 将URL中的参数取出来放到数组里
$arr_query = convertUrlQuery($arr['query']);
var_dump($arr_query);
//3 将 参数数组 再变回 字符串形式的参数格式
var_dump(getUrlQuery($arr_query));

/**
* Returns the url query as associative array
* @param   string   query
* @return   array   params
*/
function convertUrlQuery($query)
{
$queryParts = explode('&', $query);
$params = array();
foreach ($queryParts as $param)
{
$item = explode('=', $param);
$params[$item] = $item;
}
return $params;
}
function getUrlQuery($array_query)
{
$tmp = array();
foreach($array_query as $k=>$param)
{
$tmp[] = $k.'='.$param;
}
$params = implode('&',$tmp);
return $params;
}
?>

  输出结果:

array (size=4)
'scheme' => string 'http' (length=4)
'host' => string 'test.com' (length=8)
'path' => string '/testdir/index.php' (length=18)
'query' => string 'param1=10&param2=20&param3=30&param4=40&param5=50&param6=60' (length=59)

array (size=6)
'param1' => string '10' (length=2)
'param2' => string '20' (length=2)
'param3' => string '30' (length=2)
'param4' => string '40' (length=2)
'param5' => string '50' (length=2)
'param6' => string '60' (length=2)

string 'param1=10&param2=20&param3=30&param4=40&param5=50&param6=60' (length=59)
页: [1]
查看完整版本: PHP解析URL并得到URL中的参数