プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

globを使ってもいいかと思います。

戻り値は配列です(マッチするファイル名がなければ空の配列が返ります)。

http://php.net/manual/ja/function.glob.php

この回答への補足

shimix様 ありがとうございます。
globというのは知りませんでした。
シンプルでいいですね。 ワイルドカードが使えるのでとても便利そうです。
他の人にも参考になるように、私のテストしたスクリプトをご紹介しておきます。

<?php
$dir = "./jpeg/*501?.jpg";
//↑jpegフォルダの、501+1文字 という文字が含まれるjpg画像ファイルを抽出
foreach(glob($dir) as $file) //抽出したファイルを$fileという配列に格納
{
echo "filename: $file . "<br>\n";//抽出したファイル名を表示
}
?>

補足日時:2012/03/01 14:20
    • good
    • 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!?";
?>

この回答への補足

yambejp様
早速の回ご答、ありがとうございました。
やはり一度配列に格納してから、preg_matchをかけるのですね。

今回の目的が、いくつかの条件で文字列を組み合わせてファイル名を構成しているので
その中の連番部分だけを抽出したかったのです。

まだまだ初心者なので、preg_matchの使い方も参考になりました。
ありがとうございました。

補足日時:2012/03/01 14:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています