0

私はうまく機能するphpスクリプトを持っていますが、それが対象である月をリストする見出しをエコーし​​たいです。ファイル名には、_01、_02、_03 などのいずれかが含まれます。$months の配列を作成しましたが、これを行う最善の方法を見つけようとしています。

ファイル名に _01 が含まれている場合は、1 月をエコーし​​ます。それ以外の場合、ファイル名に _02 が含まれている場合は、2 月をエコーし​​ます。このシナリオのベストプラクティスを知っている人はいますか?

foreach (glob("*.mov") as $filename)

$theData = file_get_contents($filename) or die("Unable to retrieve file data");

$months = ['_01', '_02', '_03', '_04', '_05', '_06', '_07', '_08', '_09', '_10', '_11', '_12'];
4

4 に答える 4

1

おそらくこれに似たもの-月番号がファイル名に一度だけ含まれるという事実に基づいています

foreach($theData as $filename){
    preg_match('/_(\d{2})/', $filename, $match);
    echo date('F',strtotime($match[1].'/20/2000'));
}
于 2013-05-31T21:18:35.747 に答える
1

これを試して:

foreach (glob("*.mov") as $filename)

$theData = file_get_contents($filename) or die("Unable to retrieve file data");

$months = ['January' => '_01', 'February' =>  '_02', 'March' => '_03', 'April' => '_04', 'May' => '_05', 'June' => '_06', 'July' => '_07', 'August' => '_08', 'September' => '_09', 'October' => '_10', 'November' => '_11', 'December' => '_12'];

foreach($months as $key => $month){
  if(strpos($filename,$month)!==false){

      echo $key;

  }
}
于 2013-05-31T21:24:21.073 に答える
0

これが私が思いついたものです

$files = [
    "file_01",
    "file_02asdf",
    "file_03_sfsa",
    "file_04_23",
    "file_05 cat"
];

foreach($files as $file){
    preg_match("/_(\d{2,2})/", $file, $matches);
    echo date("F", strtotime("2000-{$matches[1]}-01"))."\n";
}

その結果:

1月
2月
3月
4
月 5月

于 2013-05-31T21:26:11.457 に答える
0

多分それは別の方法ですが、 preg_match の方が賢いようです

function getMonthnameByFilename($filename,$months) {
   foreach($months as $index => $m) {
        if(strpos($filename,$m) !== false) {
          return date("F",strtotime("2013-".($index+1)."-1"));
        }
    }
    return false;
}
于 2013-05-31T21:26:11.923 に答える