1

我正在尝试列出目录中所有 PHP 文件的列表,这些文件在名称的开头有一个特定的字符串(在我的情况下是一个日期戳),最后是一个特定的字符串“.php”。我的日期作为变量 ($SearchDate) 传入。我已经成功地设置了 PHP 脚本以从我的目录中读取完整的文件列表,并且只是尝试使用 preg_match 为我过滤列表。不幸的是,我在 RegEx 上完全失败了,即使反复尝试了这个备忘单

这是我所拥有的产生错误但没有结果的东西:

$SearchDate = '2013-02'; //example for february of 2013

if(preg_match('#^('.$SearchDate.')+[:graph:]{1}(\.(pdf))#', $file)) {
   //do something
}

我也试过:

preg_match('#^\Q'.$SearchDate.'\E+[:graph:]{1}\Q.pdf\E#', $file)

我的文件名如下所示:

2013-02-fileNameMightBeAlphaOr1234567890.pdf

我得到的错误如下所示:

警告:preg_match() [function.preg-match]:编译失败:仅在第 26 行 /home/directory/myfile.php 中偏移量 5 的类中支持 POSIX 命名类

4

3 回答 3

2

我还需要检查它是否以“.pdf”结尾,所以我基本上需要文件名的开头和结尾,而不关心中间发生了什么。

如果是这种情况,那么以下正则表达式应该适合您:

if(preg_match('#^' . $SearchDate . '.*?\.pdf$#', $file)) {
   //do something
}

现场演示:http: //ideone.com/h66GY0

于 2013-04-13T05:45:23.843 回答
1

这个简单的正则表达式应该可以工作

preg_match('/^'.$SearchDate.'/', $file);
于 2013-04-13T05:30:33.993 回答
0

添加{}到您的图表...喜欢

     preg_match('#^('.$SearchDate.')+[{:graph:}]{1}(\.(pdf))#', $file)
于 2013-04-13T05:40:13.727 回答