• php解析url几种方式 何苦


    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
    
    1. 利用pathinfo内置函数
    echo "<pre>";
    $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',
    )
    
    1. 利用parse_url内置函数
    echo "<pre>";
    $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',
    )
    
    1. 利用basename内置函数
    echo "<pre>";
    $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
    
    1. 正则匹配
    echo "<pre>";
    $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 "<pre>";
    $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',
    )
    
    
    var_export(getUrlQuery($arr_query));
    
    返回:
    m=admin&c=index&a=lists&catid=1&page=1
    
  • 相关阅读:
    bash 中有效建立锁
    go 语言 Makefile 指定依赖包位置
    在 mysql 中对特定的库禁用 DDL 语句
    go 语言并发机制 goroutine 初探
    Google和facebook如何应用R进行数据挖掘
    数据应用催生商业模式
    4款语音播报来电短信应用[Android]
    让 php 用 nginx 打包 zip
    10个关于 Dropbox 的另类功用(知乎问答精编)[还是转来了]
    分析以数据挖掘技术预测用户流失情况的方法
  • 原文地址:https://www.cnblogs.com/fuqian/p/16101565.html
Copyright © 2020-2023  润新知