我创建了一个带有datepicker的搜索框,我的文件夹结构如data2/mysqldump/050516
,在这个文件夹中我有一个名称为phpdev11_test1.sql.bz2
的文件我想搜索只有{{1}这样的名字的文件并且使用全名如"phpdev11_"
我使用正则表达式,但它不像这个结果那样工作。我的代码是
"phpdev11_test1"
答案 0 :(得分:0)
以下代码对我有用, 我已将你的正则表达式改为:
?^(:[AZ]:)(?:?!/(垃圾箱)[^ /] +)+ /' $全名'(?: SQL)。。。。 (?:BZ2)$#我
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
$_SERVER['DOCUMENT_ROOT'] = __DIR__;
// $firstName = null;
// $lastName = null;
$firstName = 'phpdev11_';
$lastName = 'test1';
$defaultNamePattern = '[^/]+?';
if ($firstName) {
$fullName = $firstName;
} else {
$fullName = $defaultNamePattern;
}
if ($lastName) {
$fullName .= $lastName;
} else {
$fullName .= $defaultNamePattern;
}
$dir = $_SERVER['DOCUMENT_ROOT'].'/data2/mysqldump/';
$directory = new RecursiveDirectoryIterator($dir);
$flattened = new RecursiveIteratorIterator($directory);
$regex = '#^(?:[A-Z]:)?(?:/(?!\.Trash)[^/]+)+/'.$fullName.'\.(?:sql)\.(?:bz2)$#i';
$files = new RegexIterator($flattened, $regex);
echo $regex . "\n";
foreach($files as $file) {
echo $file . PHP_EOL;
}
目录结构:
data2/ └── mysqldump ├── 050516 │ ├── phpdev11_test1.sql.bz2 │ ├── phpdev12_test1.sql.bz2 │ ├── phpdev12_test2.sql.bz2 │ └── test.txt ├── 050517 │ ├── phpdev11_test1.sql.bz2 │ └── phpdev12_test1.sql.bz2 └── .Trash └── phpdev11_test1.sql.bz2
输出:
#^(?:[A-Z]:)?(?:/(?!\.Trash)[^/]+)+/phpdev11_test1\.(?:sql)\.(?:bz2)$#i /var/www/apps/misc/phptut/trash/php/data2/mysqldump/050517/phpdev11_test1.sql.bz2 /var/www/apps/misc/phptut/trash/php/data2/mysqldump/050516/phpdev11_test1.sql.bz2