相対パスから絶対パスを求めるライブラリ(PHP)

気温急降下しすぎだよヽ(`д´) ノサミイ
あーさむい。

ちょっとしたWebアプリ作ってるんだけど、
ページ上で拾った相対パスから絶対パス求めるのがめんどくさす。

PEARあたりでなんかいいもんないかと探したが
なんか見つからない。
しゃーない(-ω-)。
ということで適当に作った。

DirPathライブラリ (Ver.1.2)

使い方:
例えば起点となるページが
「https://zafiel.wingall.com/log/archives/aaa.php」
だとしますわな。
んで、そのページに「../../about.php」という相対パスがあったら。
「https://zafiel.wingall.com/about.php」というURLを返します(・ω・)


$p = new DirPath;
$url="https://zafiel.wingall.com/log/archives/aaa.php";
$path = "../../about.php";

var_dump($p->getPath($url, $path));

↑これで正確なパス(URL)を返します(・ω・)v
パスは配列でもOK。


$path = array(
  "../../about.php",
  "../archives2/index.php",
  "abcd.php"
);

var_dump($p->getPath($url, $path));

とすれば、絶対パスは配列で返ってきます。


サーバーによってはドキュメントルートとか見に行くことあるので・・・
そんなときはgetStPath()を使用(・ω・)

$root = "https://zafiel.wingall.com/";  //ドキュメントルートURL
$path = "../../img/abcde.jpg";

var_dump($p->getStPath($root, $path));

↑は “https://zafiel.wingall.com/wp-content/uploads/abcde.jpg” を返します(・ω・)

あ、ついでに階層数返す関数も作ってありまス。

$url = "http://aaa.bbb.com/ccc/ddd/eee/fff.jpg"
var_dump($p->getLevel($url));

↑で”4″が返りマス。

・・・ま、自分が使う機会おおいのでメモ代わりにおいておこう(-ω-)

=2009/5/13追記=
「https://zafiel.wingall.com」のような階層数が1で、スラッシュで終わっていないURLを
正しく処理できていなかったので修正(Ver.1.1)

=2009/5/17追記=
細かいバグ修正 (Ver.1.2)

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください