• 技术文章 >后端开发 >php教程

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

    青灯夜游青灯夜游2020-07-18 15:55:22转载2644

    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 "<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',
    )

    3、利用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',
    )

    4、利用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

    5、正则匹配

    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

    相关教程推荐:《PHP教程

    以上就是php如何解析url?解析url的5种方式介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:php 解析url
    上一篇:PHP如何解压缩zip文件?(代码示例) 下一篇:十年程序员告诉你Apache、PHP和Mysql之间的关系
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 带你详细了解laravel框架与thinkPHP框架的区别• 如何隐藏index.php入口文件?• php易混淆的函数及方法有哪些?• php中如何查询mysql数据库数据?• PHP如何解压缩zip文件?(代码示例)
    1/1

    PHP中文网