0

日付が含まれているファイル名があります。日付は常にファイル名の最後にあります。そして、拡張子はありません(私が使用するbasename関数のため)。

私が持っているもの:

$file = '../file_2012-01-02.txt';
$file = basename('$file', '.txt');
$date = preg_replace('PATTERN', '', $file);

私は本当に正規表現が苦手なので、誰かがファイル名から日付を取得するのを手伝ってくれるかもしれません。

ありがとう

4

5 に答える 5

1

preg_replace の代わりに preg_match を使用することをお勧めします。

$file = '../file_2012-01-02';
preg_match("/.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*/", $file, $matches);
echo $matches[1]; // contains '2012-01-02'
于 2012-09-24T14:41:03.783 に答える
0

これにより、本当に必要なときに正規表現を使用します。

current(explode('.', end(explode('_', $filename))));
于 2012-09-24T14:37:41.973 に答える
0

これは私が考えるのに役立つはずです:

<?php

$file = '../file_2012-01-02.txt';
$file = basename("$file", '.txt');
$date = preg_replace('/(\d{4})-(\d{2})-(\d{2})$/', '', $file);

echo $date; // will output: file_

?>
于 2012-09-24T14:37:55.560 に答える
0

日付の前に常にアンダースコアがある場合:

ltrim(strrchr($file, '_'), '_');
      ^^^^^^^ get the last underscore of the string and the rest of the string after it
^^^^^ remove the underscore
于 2012-09-24T14:35:27.607 に答える
0

試してみることをお勧めします:

$exploded = explode("_", $filename);
echo $exploded[1] . '<br />'; //prints out 2012-01-02.txt
$exploded_again = explode(".", $exploded[1]);
echo $exploded_again[0]; //prints out 2012-01-02

短くしてください:

$exploded = explode( "_" , str_replace( ".txt", "", $filename ) );
echo $exploded[1];
于 2012-09-24T14:31:47.850 に答える