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

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

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
相对网址根据当前页面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;
		}		
	}

}
精彩图集

赞助商链接