/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

glob関数が便利すぐる

glob関数が便利すぐるので思わず書いてしまった、詳細については下のリンクよりPHPマニュアルを読んでもらえればありがたいw

PHPマニュアル - glob

この関数を簡単に説明すると

「特定のパターンにマッチしたファイルやディレクトリを一気に取得する」

ものである、面倒だが下のように

  • opendirでハンドルを開く
  • scandirでファイルとディレクトリを取得する
  • 正規表現でディレクトリを取得する

面倒くさい! 特に正規表現

<?php
$dirs = opendir("./") ;
$lists = scandir($dirs) ;
foreach($lists as $n_dir){
    if(!preg_match("/[a-z0-9_]{1,}\.|^\.{1,}$/",$n_dir)){
        $matchd = $n_dir ;
    }
}
print_r($matchd) ;
closedir($dirs) ;
?>

ということでglob使いましょうって話です、正規表現の内容は

  • a〜z0〜9で次に.が来るか => ファイル
  • .ではじまり.で終わる => ../か./にマッチ

これだと最初のファイルマッチで拡張子が無いファイルとディレクトリと間違えられるのが悩み、今まで気づかなかったのが不思議だ。
だが、globだと

<?php
$lists = glob("./",GLOB_ONLYDIR) ;
print_r($lists) ;
?>

これだけでさっきのコードとほぼ同じことができるはず・・・・
重要なのはglobの二つめの「GLOB_ONLYDIR」、これを指定して「ディレクトリ以外は取りませんよ」ってしています。
しかも「./」や「../」は抜いてくれる優れもの、俺が書いてきた正規表現はなんなんだ・・・orz

ってことでファイル操作やるときはglobとscandirと正規表現をどうぞ