我正在尝试列出目录中所有PHP文件的列表,这些文件在名称的开头有一个特定的字符串(在我的例子中是一个日期戳),最后是一个特定的字符串“.php”。我的日期作为变量传递($ SearchDate)。我已成功设置PHP脚本以从我的目录中读取完整的文件列表,并且只是尝试使用preg_match来为我过滤列表。不幸的是,即使我曾多次尝试this cheatsheet,我在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]:编译失败:POSIX 仅在偏移量为5的类中支持命名类 第26行/home/directory/myfile.php
答案 0 :(得分:2)
我还需要检查它以“.pdf”结束,所以我基本上 需要文件名的开头和结尾,并不关心发生了什么 中间。
如果是这种情况,那么跟随正则表达式应该适合你:
if(preg_match('#^' . $SearchDate . '.*?\.pdf$#', $file)) {
//do something
}
答案 1 :(得分:1)
这个简单的正则表达式应该可行
preg_match('/^'.$SearchDate.'/', $file);
答案 2 :(得分:0)
将{
和}
添加到您的图表中......例如
preg_match('#^('.$SearchDate.')+[{:graph:}]{1}(\.(pdf))#', $file)