首頁  >  文章  >  php教程  >  相對路徑 轉 網路絕對路徑(支援二級網域) ./a.jpg => http://

相對路徑 轉 網路絕對路徑(支援二級網域) ./a.jpg => http://

WBOY
WBOY原創
2016-08-04 08:54:57973瀏覽

昨天在寫用迅雷下載時,發現 ./a.jpg的檔案轉成迅雷不是網路位址,然後寫了一個方法轉換。目前處在PHP基礎層次,有不足還望請教。 會自動判斷目前的網域名稱與主域名,以下是形式: ./a.jpg = http://about.w.com/a.jpg; ../a.jpg =http://www.w.com /a.jpg 無/*

昨天在寫用迅雷下載時,發現 ./a.jpg的檔案轉成迅雷不是網路位址,然後寫了一個方法轉換。目前處在PHP基礎層次,有不足還望請教。
會自動判斷目前的域名與主域名,以下是形式:
./a.jpg => http://about.w.com/a.jpg;
../a.jpg => http:// www.w.com/a.jpg
/**
 * 相对路径转网络绝对路径
 * @param string $file
 * @return string
 */
function dirToHttpUrl($file) {

	//判断文件是否存在
	if (!file_exists($file)) {
		return false;
	}

	//域名
	$nowUrl = dirname('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);	//当前域名
	$tempUrl = explode('.', $_SERVER['HTTP_HOST']);
	$dirUrl = 'http://www.'.$tempUrl[1].'.'.$tempUrl[2].'/';					//主域名

	//文件路径的层次统计
	$tempFile = explode('../', $file);
	$tempNum = array_count_values($tempFile);

	if (array_key_exists('', $tempNum)) {
		$fileNum = $tempNum[''];
		$fileEnd = end($tempFile);
	} else {
		$fileNum = 0;
		$fileEnd = '/'.substr($tempFile[0], 2);
	}

	//域名层次统计
	$tempWeb = explode('/', $nowUrl);
	$tempWeb = array_slice($tempWeb, 3);
	$webNum = count($tempWeb);

	//文件对应的域名
	if ($fileNum > $webNum) {
		$nowUrl = $dirUrl;
	}

	//返回
	return $nowUrl.$fileEnd;

}

//dirToHttpUrl('./1.jpg');
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP模擬POST下一篇:PHP模擬POST