龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 相对网址根据当前页面url进行地址补全(采集用)

时间:2014-11-08 15:13来源:网络整理 作者:网络 点击:
分享到:
相对网址根据当前页面url进行地址补全(采集用) 相对网址根据当前页面url进行地址补全为绝对地址第一个参数是当前页面网址第二个参数是需要补全的相对地址,也可以是数组[代码片

相对网址根据当前页面url进行地址补全为绝对地址

第一个参数是当前页面网址

第二个参数是需要补全的相对地址,也可以是数组

function formaturl($url, $str){
    if (is_array($str)) {
        $return = array();
        foreach ($str as $href) {
            $return[] = formaturl($url, $href);
        }
        return $return;
    } else {
        if (stripos($str, 'http://')===0 || stripos($str, 'ftp://')===0) {
            return $str;
        }
        $str = str_replace('\\\\', '/', $str);
        $parseUrl = parse_url(dirname($url).'/');
        $scheme = isset($parseUrl['scheme']) ? $parseUrl['scheme'] : 'http';
        $host = $parseUrl['host'];
        $path = isset($parseUrl['path']) ? $parseUrl['path'] : '';
        $port = isset($parseUrl['port']) ? $parseUrl['port'] : '';

        if (strpos($str, '/')===0) {
            return $scheme.'://'.$host.$str;
        } else {
            $part = explode('/', $path);
            array_shift($part);
            $count = substr_count($str, '../');
            if ($count>0) {
                for ($i=0; $i<=$count; $i++) {
                    array_pop($part);
                }
            }
            $path = implode('/', $part);
            $str = str_replace(array('../','./'), '', $str);
            $path = $path=='' ? '/' : '/'.trim($path,'/').'/';
            return $scheme.'://'.$host.$path.$str;
        }       
    }

}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接