自定義的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM