php 解析host,php如何解析url?解析url的5种方式介绍

php解析url的几种方式

1、利用$_SERVER内置数组变量

访问:

http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1//URL的参数

echo $_SERVER['QUERY_STRING'];

返回:

m=admin&c=index&a=lists&catid=1&page=1

//包含文件名

echo $_SERVER["REQUEST_URI"];

返回:/test.php?m=admin&c=index&a=lists&catid=1&page=1

2、利用pathinfo内置函数echo "

";

$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';

var_export(pathinfo($url));

返回:array (

'dirname' => 'http://localhost',

'basename' => 'test.php?m=admin&c=index&a=lists&catid=1&page=1#top',

'extension' => 'php?m=admin&c=index&a=lists&catid=1&page=1#top',

'filename' => 'test',

)

3、利用parse_url内置函数echo "

";

$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';

var_export(parse_url($url));

返回:array (

'scheme' => 'http',

'host' => 'localhost',

'path' => '/test.php',

'query' => 'm=admin&c=index&a=lists&catid=1&page=1',

'fragment' => 'top',

)

4、利用basename内置函数echo "

";

$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';

var_export(basename($url));

返回:test.php?m=admin&c=index&a=lists&catid=1&page=1#top

5、正则匹配echo "

";

$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';

preg_match_all("/(\w+=\w+)(#\w+)?/i",$url,$match);

var_export($match);

返回:array (

0 =>

array (

0 => 'm=admin',

1 => 'c=index',

2 => 'a=lists',

3 => 'catid=1',

4 => 'page=1#top',

),

1 =>

array (

0 => 'm=admin',

1 => 'c=index',

2 => 'a=lists',

3 => 'catid=1',

4 => 'page=1',

),

2 =>

array (

0 => '',

1 => '',

2 => '',

3 => '',

4 => '#top',

),

)

url常用处理方法/**

* 将字符串参数变为数组

* @param $query

* @return array

*/

function convertUrlQuery($query)

{

$queryParts = explode('&', $query);

$params = array();

foreach ($queryParts as $param) {

$item = explode('=', $param);

$params[$item[0]] = $item[1];

}

return $params;

}

/**

* 将参数变为字符串

* @param $array_query

* @return string

*/

function getUrlQuery($array_query)

{

$tmp = array();

foreach ($array_query as $k => $param) {

$tmp[] = $k . '=' . $param;

}

$params = implode('&', $tmp);

return $params;

}

例:echo "

";

$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';

$arr = parse_url($url);

$arr_query = convertUrlQuery($arr['query']);

var_export($arr_query);

返回:array (

'm' => 'admin',

'c' => 'index',

'a' => 'lists',

'catid' => '1',

'page' => '1',

)

1

var_export(getUrlQuery($arr_query));

返回:m=admin&c=index&a=lists&catid=1&page=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值