Нужна помощь в настройке регулярных выражений для имен файлов с размерами - PullRequest
1 голос
/ 10 февраля 2010

У меня есть много фильмов в каталогах с именами файлов, содержащими их размеры.

  1. дескриптор-800x600.mov
  2. cool_animation-720p.mp4
  3. reactor-1080p.mov
  4. test-640x480.mov

Я хочу вытащить 800, 600 из # 1. 720 от # 2, 1080 от # 3 и т. Д.

Нужна помощь в настройке того, что у меня так далеко:

$re = '/^(.*?)\-(\d{3,4})p+|(\d{2,4})x(\d{2,4})+\.mov|mp4$/';
preg_match($re, $filename ,$matches);

Совпадения для # 1: (Получение дополнительных вещей, которые мне не нужны ...?)

Array
(
    [0] => 800x600.mov
    [1] => {empty_string}
    [2] => {empty_string}
    [3] => 800
    [4] => 600
)

Матчи для # 2:

Array
(
    [0] => testing-720p
    [1] => testing
    [2] => 720
)

Я, очевидно, что-то не так, любая информация будет принята с благодарностью!

1 Ответ

1 голос
/ 10 февраля 2010

вам не нужно делать это немного сложнее. Если ваша файловая структура всегда имеет «-» и расширение, разделите их. например,

$a = array("descriptor-800x600.mov", "cool_animation-720p.mp4", "reactor-1080p.mov","test-640x480.mov");
foreach ($a as $name){
    $s = preg_split("/[-.]/",$name);
    $what_i_want=$s[1];
    $w = explode("x",$what_i_want);
    print_r($w);
}

выход

$ php test.php
Array
(
    [0] => 800
    [1] => 600
)
Array
(
    [0] => 720p
)
Array
(
    [0] => 1080p
)
Array
(
    [0] => 640
    [1] => 480
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...