doulu1907 2014-01-12 15:23 采纳率: 100%
浏览 39
已采纳

Php file_exist与正则表达式

I am trying to use regex pattern to search for files.

Directory path is:

$css_dir = MY_PLUGIN_DIR.'/source/css/';

Css filename starts with:

$css_prefix = 'hap_css_';

and ends with:

'.css'

With some amount of unknown characters in between.

I dont know how to construct regex pattern with variable and how to construct file exist with regex.

Thank you!

  • 写回答

1条回答 默认 最新

  • dongsunny1113 2014-01-12 15:25
    关注

    You can use glob():

    $files = glob($css_dir . $css_prefix . '*.css');
    

    However, you have to roll your own DirectoryIterator based solution for more complex filtering:

    $dir = new DirectoryIterator($css_dir);
    $pattern = '/^' . preg_quote($css_prefix) . '.+\\.css$' . '/';
    foreach ($dir as $fileInfo) {
      if (preg_match($pattern, $fileInfo->getBaseName())) {
        // match!
      }
    }
    

    (One could also integrate a RegexIterator):

    The use of scandir() is possible as well:

    $pattern = '/^' . preq_quote($css_prefix) . '.+\\.css$' . '/';
    
    $files = array_filter(scandir($css_dir), function ($filename) {
      return preg_match($pattern, $filename);
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分