Boyutları ile dosya için yardım verdiği regex Need

1 Cevap php

Ben onların boyutlarını içeren dosya ile dizinleri bir çok film var.

  1. tanımlayıcı-800x600.mov
  2. cool_animation-720p.mp4
  3. Reaktör-1080p.mov
  4. test 640x480.mov

Ben # 1 800 600, dışarı çekmek için arıyorum. 720 # 2, 1080 vb # 3, den

Ben bugüne kadar ne var çimdik bazı yardım arıyor:

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

# 1 için Maçlar: (bazı ekstra şeyler alma ihtiyacım yok ...?)

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

2. maçları:

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

Açıkçası yanlış bir şey, herhangi bir giriş büyük takdir var ettik!

1 Cevap

bunu bazı karmaşık yapmak zorunda değilsiniz. "-" Dosya yapısı her zaman sahip ise ve uzatma, onlara ayrıldı. örneğin

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

çıktı

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