2010-02-10 9 views
1

J'ai beaucoup de films dans les répertoires avec des noms de fichiers contenant leurs dimensions.Besoin d'aide peaufinage regex pour les noms de fichiers avec les dimensions

  1. descriptor-800x600.mov
  2. cool_animation-720p.mp4
  3. reactor-1080p.mov
  4. test-640x480.mov

Je cherche à tirer le 800 , 600 de # 1. 720 de # 2, 1080 de # 3, etc.

Vous recherchez une aide Tweak ce que j'ai jusqu'à présent:

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

résultats correspondant à # 1: (Obtenir des choses supplémentaires Je ne pas besoin ...)

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

Matches pour # 2:

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

J'ai évidemment eu quelque chose de mal, toute entrée serait grandement appré ed!

Répondre

1

vous n'avez pas à le faire un peu compliqué. Si votre structure de fichier a toujours "-" et l'extension, diviser sur eux. par exemple

$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); 
} 

sortie

$ php test.php 
Array 
(
    [0] => 800 
    [1] => 600 
) 
Array 
(
    [0] => 720p 
) 
Array 
(
    [0] => 1080p 
) 
Array 
(
    [0] => 640 
    [1] => 480 
) 
+0

Vous apprécierez l'ghostdog d'aide. Le réduire en plus petits morceaux était le chemin à parcourir. – wdavis