• 自定义的parse_url逆向函数http_build_url,将数组转为url字符串


    parse_url函数可以讲一个url字符串解析成一个数组,但是php中似乎没有parse_url的逆向函数来讲一个解析出来的数组组合成url字符串,只有一个http_build_query用来将数组组合成query string。于是我自己写了一个http_build_url函数将parse_url解析出来的数组组合成完整的url。

    /**
     * 根据parse_url格式的数组生成完整的url
     * @param array $arr 接受parse_url解析出来的所有参数,完整参数实例如下:
     *        Array
     *        (
     *            [scheme] => http            // 协议
     *            [host] => www.baidu.com     // 主机
     *            [port] => 80                // 端口,可选
     *            [path] => /path/file.php    // 路径(文件名),可选
     *            [query] => a=aaa&b=aaabbb    // 参数(query string),可选
     *            [fragment] => 123            // 附加部分或者叫做锚点(#后面的),可选
     *        )
    */
    function http_build_url($url_arr){
        $new_url = $url_arr['scheme'] . "://".$url_arr['host'];
        if(!empty($url_arr['port']))
            $new_url = $new_url.":".$url_arr['port'];
        $new_url = $new_url . $url_arr['path'];
        if(!empty($url_arr['query']))
            $new_url = $new_url . "?" . $url_arr['query'];
        if(!empty($url_arr['fragment']))
            $new_url = $new_url . "#" . $url_arr['fragment'];
        return $new_url;
    }

    使用测试:

    $url = "http://www.dragondean.cn:80/path/file.php?a=aaa&b=bcdefg#123";
    $url_arr = parse_url($url);
    print_r($url_arr);
            
    $url_new = http_build_url($url_arr);
    echo $url_new;

    运行结果:

    Array
    (
        [scheme] => http
        [host] => www.dragondean.cn
        [port] => 80
        [path] => /path/file.php
        [query] => a=aaa&b=bcdefg
        [fragment] => 123
    )
    http://www.dragondean.cn:80/path/file.php?a=aaa&b=bcdefg#123
  • 相关阅读:
    java反编译工具
    Eclipse反编译插件: Jodeclipse与JadClipse
    Apk修改利器:ApkToolkit v2.1
    新浪微博2.5.1 for Android 去广告
    java
    第K顺序统计量
    身份证号码
    pop3
    google
    Exception
  • 原文地址:https://www.cnblogs.com/dragondean/p/php-http_build_url-parse_url.html
Copyright © 2020-2023  润新知