PHPで相対パスから絶対URL(URI)を作成する

元となるURLとそれに対する相対パスを指定すると絶対URLを作成するというやつです。

元URL:http://www.test.com/gallery/index.html
相対パス:../contact.html
絶対URL:http://www.test.com/contact.html

よくあるあれですが、Googleで探して見つからなかったので作成してみました。


使い方

make_uri('元url','相対パス');

です。

//========================================== _make_uri:version 1.2
function _make_uri($base='', $rel_path=''){

	$base = preg_replace('/\/[^\/]+$/','/',$base);
	$parse = array();
	$parse = parse_url($base);
	if (preg_match('/^https\:\/\//',$rel_path) ){
		return $rel_path;
	}
	elseif ( preg_match('/^\/.+/', $rel_path) ){
		$out = $parse['scheme'].'://'.$parse['host'].$rel_path;
		return $out;
	}
	$tmp = array();
	$a = array();
	$b = array();
	$tmp = split('/',$parse['path']);
	foreach ($tmp as $v){
		if ($v){  array_push($a,$v); }
	}
	$b = split('/',$rel_path);
	foreach ($b as $v){
		if ($v=='.'){}
		elseif($v=='..'){ array_pop($a); }
		else{ array_push($a,$v); }
	}
	$path = join('/',$a);
	$out = $parse['scheme'].'://'.$parse['host'].'/'.$path;
	return $out;
}

注意:¥マークは適宜バックスラッシュに置換すること。

No.501

03/27 13:25






Powered By flat memo Ver 0.9.6.2 © econosys system