[PHP] 便利に使える関数 pathinfo

2016年6月26日

PHP テクノロジー プログラミング

PHPでWEBサイト構築などを行なっている際に、ファイル操作でURLからファイルを抽出したり、拡張子を抜き出したり、document-rootを取得したり・・・ と、何かとファイル、ディレクトリなどのコントロールをしなければいけない時に、「pathinfo」関数が便利だと最近気がついた(遅!!) PHPマニュアル(日本語)サイト

関数情報と使い方

概要

ファイルパスの情報を取得する。 PHP4移行であれば使えるようだ。

返り値情報

  1. dirname : Document-root(ファイル名を省いた形)
  2. basename : ファイル名またはディレクトリ名
  3. extension : ファイルの拡張子
  4. filename : ファイルの拡張子を抜いた名前(ver 5.2.0移行)
連想配列で取得できるので、結構便利なのだ。 いちいちexplodeしたり、str_replaceしたりしなくてもいいので、重宝します。

使用例

<?php $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n";

結果

/www/htdocs/inc lib.inc.php php lib.inc 関数一発で取得できるので使わないと損です。 何故今まで使わなかったのだろう・・・orz

いろいろ実験

URL

<?php $path_parts = pathinfo('http://wordpress.ideacompo.com/hoge.php'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n";

結果

http://wordpress.ideacompo.com hoge.php php hoge 想定通りの結果です。個人的にはURLには「プロトコル」「ドメイン」「ポート」「document-root階層」などがあるとよりいいかも・・・と思ったんですが、 あくまでpathinfo関数なので贅沢は言うまい。 そして、URL情報の取得は「parse_url」というのがある。 そっち使えって事なのね。

windows-path

<?php $path_parts = pathinfo('c:¥windows¥system¥test.dat'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n";

結果

. c:¥windows¥system¥test.dat dat c:¥windows¥system¥test あたりまえですが、「/」区切りではないので、windows階層は認識しませんね。 でもサーバー内部パスということで、windowsサーバーでPHPを叩くことが無いので、これは捨てましょう。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。