Php 需要帮助调整带有维度的文件名的正则表达式吗

Php 需要帮助调整带有维度的文件名的正则表达式吗,php,regex,filenames,Php,Regex,Filenames,我在目录中有很多电影,文件名包含它们的维度 描述符-800x600.mov 酷炫动画-720p.mp4 反应堆-1080p.mov 测试-640x480.mov 我想从#1中拿出800600。720来自#2,1080来自#3等 正在寻找一些帮助来调整我到目前为止得到的: $re = '/^(.*?)\-(\d{3,4})p+|(\d{2,4})x(\d{2,4})+\.mov|mp4$/'; preg_match($re, $filename ,$matches); #1的匹配:(得到一些我不

我在目录中有很多电影,文件名包含它们的维度

  • 描述符-800x600.mov
  • 酷炫动画-720p.mp4
  • 反应堆-1080p.mov
  • 测试-640x480.mov
  • 我想从#1中拿出800600。720来自#2,1080来自#3等

    正在寻找一些帮助来调整我到目前为止得到的:

    $re = '/^(.*?)\-(\d{3,4})p+|(\d{2,4})x(\d{2,4})+\.mov|mp4$/';
    preg_match($re, $filename ,$matches);
    
    #1的匹配:(得到一些我不需要的额外东西…?)

    #2的匹配项:


    很明显,我有点不对劲,任何意见都将不胜感激

    你不必做一些复杂的事情。如果您的文件结构总是有“-”和扩展名,请拆分它们。乙二醇

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

    你不必做一些复杂的事情。如果您的文件结构总是有“-”和扩展名,请拆分它们。乙二醇

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

    感谢幽灵狗的帮助。将其缩小为更小的部分是一条路。感谢幽灵狗的帮助。将其缩小为更小的部分是一条出路。