php"glob"模式帮助

3 html php xml

我有一个sitemaps目录,所有目录都以数字结尾.

我有一个自动站点地图生成器脚本,需要使用glob计算文件夹中的所有站点地图.

目前我被困在这里.

我需要的是计算所有包含数字的站点地图文件,所以我不计算那些没有任何数字的文件.

例如,在我的root中我有一个sitemap.xml文件,然后我还有sitemap1.xml,sitemap2.xml,sitemap3.xml等...

当文件名包含像"sitemap1.xml"这样的数字时,我需要使用glob才返回true.

这可能吗?

$nr_of_sitemaps = count(glob(Sitemaps which contains numbers in their filenames)); 
Run Code Online (Sandbox Code Playgroud)

谢谢

sal*_*the 5

对于以<digit>.xml您结尾的文件的glob,可以使用如下模式:

*[0-9].xml
Run Code Online (Sandbox Code Playgroud)

因此,为了计算匹配,PHP可能看起来像:

$count = count(glob('/path/to/files/*[0-9].xml'));
Run Code Online (Sandbox Code Playgroud)

如果你想要匹配文件的超精细控制(比glob可以给出的更多),你可以使用一般模式然后preg_grep用来过滤生成的数组到你想要的.

$count = count(
    preg_grep(
        '#(?:^|/)sitemap\d{1,3}\.xml$#',
        glob('/path/to/files/sitemap*.xml')
    )
);
Run Code Online (Sandbox Code Playgroud)

另见:http://cowburn.info/2010/04/30/glob-patterns/