1

ファイル名の一部を取得したい

ファイル名blabla_2009-001_name_surname-name_surname

取得したい: 2009-001, name_surname, name_surname

思いついたけどダメだな

preg_match("/(?:[0-9-]{8})_(?:[a-z_]+)-(?:[a-z_]+)/", $filename, $matches);

ポインタはありますか?

ありがとう!ブラジル

4

4 に答える 4

0

ありがとうございました。

「nikc」が指摘したように、私は自分のソリューションを更新しました...私はいくつかの方向性が必要でした...

誰かが同様のソリューションを必要とする場合のコードは次のとおりです...

皆さん、ありがとうございました!

preg_match('/([0-9-]{8})_([^-]+)-([a-z_]+).([a-z]+)/', $filename, $matches);
于 2010-02-15T10:10:51.703 に答える
0

ファイル名の形式が変わらないと仮定すると、次のようになります。

preg_match('#(\d{4}-\d{3})_(.*?)-(.*?)$#', $filename, $match);

拡張機能を処理するように更新されたバージョン:

preg_match('#(\d{4}-\d{3})_(.*?)-(.*?)\.(.*?)$#', $filename, $match);
于 2010-01-20T14:20:30.247 に答える
0

ファイル名が常にその構造である場合

$name = "blabla_2009-001_name_surname-name_surname";
$s = explode("_",$name,3);
$t = explode("-",end($s));
print "$s[1] $t[0] $t[1]\n";

出力

$ php test.php
2009-001 name_surname name_surname
于 2010-01-20T14:20:35.953 に答える
0
preg_match("([0-9-]{8})_([^_]+)_([^_]+)-([^_]+)_([^_]+)$", $filename, $matches);
于 2010-01-20T14:17:07.150 に答える