【问题标题】:Regular expression to filter filenames in PHP在 PHP 中过滤文件名的正则表达式
【发布时间】:2011-08-10 13:52:24
【问题描述】:

我有代表文件路径的字符串。像这样的东西。

folder1/folderA/file1.flv
文件夹2/文件夹B/file1.mp4
文件夹3/文件夹C/file1.jpg

我正在尝试编写一个基本上与有效扩展名列表匹配的表达式,例如.flv.mp4.flv

我确定我离这里很远,但这就是我所拥有的.[(\.flv/)|(\.wmv/)|(\.mp4)] 很滑稽,我敢肯定……但希望能说明要点。

【问题讨论】:

    标签: php regex pcre


    【解决方案1】:

    作为正则表达式的替代方法,您可以使用pathinfo(),它可以可靠地从路径中获取文件扩展名。

    $allowed_extensions = array("flv", "mp4", "mpeg"); # note: all lowercase
    
    $ext = pathinfo("/folder1/folderA/file1.flv", PATHINFO_EXTENSION);
    
    # Search array of allowed extensions
    if (in_array(strtolower($ext), $allowed_extensions))
     echo "Okay";
    else
     echo "Fail";
    

    【讨论】:

    【解决方案2】:

    如果我的解释正确,你可能只想要这样的东西:

    /[.](flv|mp4|wmv)$/
    

    $ 确保它匹配字符串/文件名的末尾。替代方案列在括号中,[.] 只是\. 的更好表示法

    【讨论】:

      【解决方案3】:
      $str = "folder1/folderA/file1.jpg";
      $found =  preg_match("/[.]+(jpg|flv)$/", $str, $returns);
      print_r ($returns);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多