• 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
    
  • 相关阅读:
    maven报错【Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of】
    Srping框架中使用@query注解实现复杂查询
    FreeMarker自定义TemplateDirectiveModel
    SpringMVC和Freemarker整合,带自定义标签的使用方法
    关于FreeMarker自定义TemplateDirectiveModel
    滑块验证码【插件待研究】
    注册页面 注册码【欠缺较多 待完善】
    IO流-文件的写入和读取
    Date、String、Calendar相互转化
    Runtime类
  • 原文地址:https://www.cnblogs.com/fuqian/p/11736859.html
Copyright © 2020-2023  润新知