当前位置:  开发笔记 > 编程语言 > 正文

使用正则表达式检查PHP中的文件扩展名

如何解决《使用正则表达式检查PHP中的文件扩展名》经验,为你挑选了2个好方法。

我正在读取单个目录中的所有文件,我想过滤JPG,JPEG,GIF和PNG.

大写和小写字母.这些是唯一可以接受的文件.

我目前正在使用这个:

$testPics = takeFiles($picsDir, "([^\s]+(?=\.(jpg|JPG|jpeg|JPEG|png|PNG|gif|GIF))\.\2)");

而函数takeFiles看起来像这样:

function takerFiles($dir, $rex="") {
    $dir .= "/";
    $files = array();
    $dp = opendir($dir);
    while ($file = readdir($dp)) {
      if ($file == '.')  continue;
      if ($file == '..') continue;
      if (is_dir($file)) continue;
      if ($rex!="" && !preg_match($rex, $file)) continue;
      $files[] = $file;
    }
    closedir($dp);
    return $files;
  }

它总是什么都不返回.所以我的正则表达式代码肯定有问题.



1> 小智..:

我认为你的正则表达式有问题.首先尝试在这里测试正则表达式:https://www.regexpal.com/

我认为这个可能适合你:

/^.*\.(jpg|jpeg|png|gif)$/i

注意最后的/ i - 这是"不区分大小写"标志,省去了你必须输入所有排列:)



2> Eran Galperi..:

如何使用glob()代替?

$files = glob($dir . '*.{jpg,gif,png,jpeg}',GLOB_BRACE);

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有