• ベストアンサー

file_existsでファイル名の部分一致で検索

PHPの勉強中なのですが、指定フォルダにあるファイルを、部分一致で存在チェックしたいのですが、file_existsでは、正規表現とかは使えないのでしょうか? それとも、readdirでファイル一覧を取得して、そこから検索して存在チェックするのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

globを使ってもいいかと思います。戻り値は配列です(マッチするファイル名がなければ空の配列が返ります)。 http://php.net/manual/ja/function.glob.php

zinziroge
質問者

補足

shimix様 ありがとうございます。 globというのは知りませんでした。 シンプルでいいですね。 ワイルドカードが使えるのでとても便利そうです。 他の人にも参考になるように、私のテストしたスクリプトをご紹介しておきます。 <?php $dir = "./jpeg/*501?.jpg"; //↑jpegフォルダの、501+1文字 という文字が含まれるjpg画像ファイルを抽出 foreach(glob($dir) as $file) //抽出したファイルを$fileという配列に格納 { echo "filename: $file . "<br>\n";//抽出したファイル名を表示 } ?>

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>readdirでファイル一覧を取得 まぁそうでしょうね、そもそも完全一致じゃなければ 所在チェックの意味もあまりないと思いますが・・・ <?PHP $d = dir("./"); $pattern="/条件/"; $flg=false; while (false !== ($entry = $d->read())) { if(preg_match($pattern,$entry)){ $flg=true; break; } } if($flg) echo "match!!"; else echo "unmatch!?"; ?>

zinziroge
質問者

補足

yambejp様 早速の回ご答、ありがとうございました。 やはり一度配列に格納してから、preg_matchをかけるのですね。 今回の目的が、いくつかの条件で文字列を組み合わせてファイル名を構成しているので その中の連番部分だけを抽出したかったのです。 まだまだ初心者なので、preg_matchの使い方も参考になりました。 ありがとうございました。

専門家に質問してみよう