Регулярное извлечение имени файла - PullRequest
1 голос
/ 20 января 2010

Я хотел бы получить части имени файла

имя файла blabla_2009-001_name_surname-name_surname

Я хотел бы получить: 2009-001, имя_фамилия, имя_фамилия

Я придумал это, но это не хорошо

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

Есть указатели?

Спасибо! BR

Ответы [ 4 ]

0 голосов
/ 15 февраля 2010

Спасибо вам всем,

Я обновил свое собственное решение Как указал "nikc" ... Мне просто нужно какое-то направление ...

вот код, если кому-то понадобитсяаналогичное решение ...

Спасибо всем!

preg_match('/([0-9-]{8})_([^-]+)-([a-z_]+).([a-z]+)/', $filename, $matches);
0 голосов
/ 20 января 2010

Предполагается, что формат имени файла не изменяется:

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

Обновленная версия для обработки расширения:

preg_match('#(\d{4}-\d{3})_(.*?)-(.*?)\.(.*?)$#', $filename, $match);
0 голосов
/ 20 января 2010

если ваше имя файла всегда имеет такую ​​структуру

$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
0 голосов
/ 20 января 2010
preg_match("([0-9-]{8})_([^_]+)_([^_]+)-([^_]+)_([^_]+)$", $filename, $matches);
...