[PHP-users 14623]Re: ディレクトリの特定の拡張子を持つファイルの数を数えるには

titi @ beefarm.jp titi @ beefarm.jp
2003年 4月 14日 (月) 11:10:52 JST


kisumiです。おはようございます。

私はディレクトリ内の検索などをする場合、前者(引用は省略させて頂きまし
た)と同じような物を使用しております。

で、問題の後者についてですが、あまり詳しくは無いのでちょっとマニュアルを
見てみました。マニュアルは読まれましたでしょうか?


>こういったやり方でも拡張子と言う事を抜きにすればできるのですが、
>どなたかpathinfo["extention"]を使って数える方法のアドバイスを
>お願い出来ませんか? 又、過去ログでpathinfoを調べましたが、
>適当なものが見つかりませんでした。 よろしくお願いします。


使用例として次のように書いてあります。

<?php

$path_parts = pathinfo("/www/htdocs/index.html");

echo $path_parts["dirname"] . "\n";
echo $path_parts["basename"] . "\n";
echo $path_parts["extension"] . "\n";

?>


これに対しての出力の結果は順番に次の通りです。

/www/htdocs
index.html
html


つまり、pathinfo["extention"]を使うと確かにファイルタイプは取得できます
が最初に

$path_parts = pathinfo("/www/htdocs/index.html");

ここを設定している点に着目する必要があるのではないでしょうか?



具体的な用法がわかりませんし、目的もわかりませんが、基本となる処理は
opendir()等で対象となるディレクトリの中身をズラズラ〜っと読んで行く必要
はあるでしょう。


ただし、前者には次のような記述がありますよね。これは「dat」という拡張子
を持つものだけをマッチングして行きますから、不意にディレクトリの中に混在
してしまっているものは解らないという一面があるでしょう。

例えば知らない内に全然関係のない「.doc」なんていうドキュメント系のものが
混ざってしまっている場合等。既知の情報には対応できますが、未知の情報に対
しては対応できないという点、恐らくこの点を今回解決させたいのだと思います。


if ($data != "." && $data != "..") {
 // datという文字を含む物を$dataから探し出せれば配列に追加
        if (ereg(dat,$data)){
            $array[] = $data;
        }


ちなみに、上記は引用ですが「dat」を代入されていますよね。ここは拡張子と
いう事であれば最低限でも「".dat"」と記述する方が好ましいと思います。現状
では拡張子云々という以前に、単なる文字列ですから「date.php」や「idaten.
jpg」等もマッチしてしまいますよ。
まだまだ精度を上げる書式はありますので、正規表現も見直された方が良いと思
います。


まずはpathinfo["extention"]を使うか否かは別として、ディレクトリ内の情報
をリスト化する方法を検討されてはいかがでしょうか?


いきなりシマウマの“シマ”の部分から描き始めた感じがしますので、一度“ウ
マ”の部分を描いてみましょう。


ここまで引っ張ってハズしていたら、ごめんなさい。
それからお名前を書いて欲しいです。ヘッダから見て「吉田さん」?




PHP-users メーリングリストの案内