PHP4にもscandir()がほしいぞ
scandir()は便利な関数ですが、PHP5にしかない。 納得いかないので、自分でさらに高機能なmy_scandir()関数を作ってみた。 正規表現検索に排他検索もできちゃうぞ。
PHP4の人、レガシー差別にめげずに頑張ってくださいね。
my_scandir関数
/** * 特定ディレクトリのファイル、フォルダリストを作成 * 対象のディレクトリを指定し、結果のリストを指定するとそこにリストを格納してくれます。 * * @author colori * @param string $dir 検索対象のディレクトリパス * @param array $list 結果を格納する配列 * @param boolean $rec 再帰的に検索するかどうか * @param boolean $nodot '.','..'を対象から外すかどうか * @param string $regexp 検索対象の正規表現 * @param boolean $except 正規表現を除去扱いにするか含有扱いにするか */ function my_scandir($dir, &$list, $rec=true, $nodot=true, $regexp='', $except=false) { $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { if ($nodot and (preg_match("/^.+$/", $filename))) continue; $path = "$dir/$filename"; if ($regexp) { if ($except and preg_match($regexp,$path)) continue; if (!$except and !preg_match($regexp,$path)) continue; } if ($rec and is_dir($path)) my_scandir($path, $list, $rec, $nodot, $regexp, $except); array_push($list, $path); } }
使いかた
必須のパラメーターは2つ。 検索対象のディレクトリパスと、検索結果を格納する配列です。
使用例
$list = array(); $dir = '/my/dir'; my_scandir($dir, $list);
これで$list変数に /my/dir 内のファイル/フォルダがフルパスで格納されます。
再帰検索オプション
3つめのパラメーターはフォルダが見つかった際に再帰検索をするかどうかを指定します。 標準では再帰検索するようになっているので、させたくなかったらfalseを指定してください。
ドットファイル排除オプション
4つめのパラメーターにはドットファイル「.」「..」を排除するかどうかを指定できるオプションを付けました。
正規表現オプション
さらに正規表現検索機能もつけました。 5つめのパラメーターにpreg_match()で指定するのと同じような正規表現文字列を指定することで、一致するものだけを検索することができます。
正規表現の排他表現
6つめのパラメーターにtrueを与えると、前述の正規表現に一致しないものだけを検索することができます。
SUPERSCANDI スウェーデン製ディッシュクロス 再利用可能な生分解性セルローススポンジクリーニングクロス キッチンディッシュラグウォッシュワイプ ペーパータオル交換用洗面タオル 8 x 7 x 1 inches (10 Pack Blue)
SUPERSCANDI スウェーデン食器。 当社の食器洗い用布は、セルローススポンジの機能を備えており、最大25ロールのペーパータオルで高吸収性タオルとして機能します。 マイクロファイバークリーニングクロスよりも汎用性が高く、表面を拭くのに最適です。食器を洗ったり、こぼしたものを拭き取ったり、バスルーム、ペット、車、庭、オフィスでの使用に最適です。 環境に優しい製品です。 化学薬品や埋立地は使用していません。 天然で持続可能な素材、綿30%、スウェーデンの森林産生分解性セルロース木材パルプ70%... もっと読む
限定品 SUPERSCANDI スウェーデン製 ディッシュ クロス 再利用可5枚入り
¥2,980 (2025-07-25 20:10 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)限定品 SUPERSCANDI スウェーデン製 ディッシュ クロス 再利用可5枚入り
2009-12-14