代码之家  ›  专栏  ›  技术社区  ›  Karl Hill

全局迭代器正则表达式

  •  0
  • Karl Hill  · 技术社区  · 8 年前

    $iterator = new GlobIterator($this->srcDir . $identifier . ".*");
    

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721.*
    

    这将返回正确的文件。

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
    

    匹配

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.*
    

    返回文件:

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.250m.jpg
    /var/www/import/2014047-0216/YukonGold.A2014047.1620.500m.jpg
    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
    

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721*

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
    

    /var/www/import/2014047-0216/YukonGold.A2014047.1620*

    /var/www/import/2014047-0216/YukonGold.A2014047.1620.250m.jpg
    /var/www/import/2014047-0216/YukonGold.A2014047.1620.500m.jpg
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   revo shanwije    8 年前

    你应该在房间里用 RegexIterator

    // Notice that there is no expansion pattern used here
    $path = '/var/www/import/2014047-0216/YukonGold.A2014047.1620.';
    $re = '~\Q' . $path . '\E(?:[^.]+\.)?\w+$~';
    $regexIterator = new RegexIterator(new GlobIterator("{$path}*"), $re);
    foreach ($regexIterator as $filename) {
        echo $filename . "\n";
    }
    
    推荐文章