• ベストアンサー

条件によりそれ以下を実行しない方法

あるディレクトリ(./ppp)をオープンして、ディレクトリ内の最新ファイル名を取得し、その最新ファイル名(下記スクリプト中の$filename)に".gz"という文字列が含まれていたらそれ以下のスクリプトを実行せずにディレクトリクローズしてスクリプトを中止するスクリプトを考えています。下記スクリプト中の■■■の部分にあたる部分がわかりませんのでご教授願います。phpは4.3.2です。 =========== <?php $dir = opendir("./ppp");//ディレクトリオープン $latestfile = 0;//最新ファイル名取得 while ($fnm = readdir($dir)) { if($fnm == "." || $fnm == "..") continue; $ftime = filemtime("./ppp/$fnm"); if($latestfile < $ftime){ $latestfile = $ftime; $latestfilename =$fnm; $filename = "./ppp/$latestfilename"; } } ■■■ ・ ・ ・ closedir($dir); ?> ===========

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

いろいろ方法はありますが 拡張子を取得する場合(拡張子の文字数に影響されないので応用が利く) $path_parts = pathinfo($filename); if ($path_parts['extension'] == "gz") { closedir($dir); exit; } 最後の3文字取得(今回限りの方法) if ($substr($filename, -3) == ".gz") { closedir($dir); exit; }

shinmaiphp
質問者

お礼

すみません。ちょっとこちらのケアレスミスにより上手く行かなかっただけでした。 無事解決いたしました。ありがとうございます。

shinmaiphp
質問者

補足

ご回答感謝いたします。 ======= $path_parts = pathinfo($filename); if ($path_parts['extension'] == "gz") { closedir($dir); exit; } ======= の方法で試してみましたが、拡張子gzのファイルが存在していても処理が行われてしまいます。 このスクリプトの記載場所は質問にありますスクリプトの■■■の場所でよろしいでしょうか? もしかして何か変更する必要はございますでしょうか?

その他の回答 (1)

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

>".gz"という文字列が含まれていたらそれ以下のスクリプトを実行せず 複数のファイルがあったとして.gzというファイルが 何番目にでてくるという保障がないなか冗長に頭から 処理をするのはいかがなものかと。 まずは一通りファイル名をえてから、チェックして 処理をするのが妥当なやりかただと思います。 処理をとめるのは関数化しておいて、ifでチェック してreturnで抜ければよいのでは?

shinmaiphp
質問者

補足

アドバイスありがとうございます。 >複数のファイルがあったとして.gzというファイルが >何番目にでてくるという保障がないなか 説明不足で申し訳ございません。 一定のピッチで.gzファイル削除のクーロンが動いており、 ./pppディレクトリ内には2つ以上の.gzファイルが存在することはない構成になっています。 他に何か良い方法が有ればご教授願います。

関連するQ&A