気温急降下しすぎだよヽ(`д´) ノサミイ
あーさむい。
ちょっとしたWebアプリ作ってるんだけど、
ページ上で拾った相対パスから絶対パス求めるのがめんどくさす。
PEARあたりでなんかいいもんないかと探したが
なんか見つからない。
しゃーない(-ω-)。
ということで適当に作った。
使い方:
例えば起点となるページが
「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)