我在问之前搜索过,没有幸运..
我为自己寻找一个简单的脚本,我可以搜索文件/文件夹。在php手册中找到了这段代码片段(我想我需要这个),但它对我不起作用。
“正在寻找一种使用掩码搜索文件/目录的简单方法。这是一个功能。
默认情况下,此函数会在内存中保留scandir()结果,以避免为同一目录扫描多次。“
<?php
function sdir( $path='.', $mask='*', $nocache=0 ){
static $dir = array(); // cache result in memory
if ( !isset($dir[$path]) || $nocache) {
$dir[$path] = scandir($path);
}
foreach ($dir[$path] as $i=>$entry) {
if ($entry!='.' && $entry!='..' && fnmatch($mask, $entry) ) {
$sdir[] = $entry;
}
}
return ($sdir);
}
?>
感谢您的帮助,
彼得
答案 0 :(得分:3)
$a = new RegexIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('DIRECTORY HERE')
),
'/REGEX HERE/',
RegexIterator::MATCH
);
foreach ($a as $v) {
echo "$v\n"; //$v will be the filename
}
答案 1 :(得分:1)
答案 2 :(得分:0)
我只想搜索文件,您可以使用此代码段:
<?php
$s = $get['s'];
$e = ".htm";
$folders = array("data1", "data2", "data3");
$files = array(); // nothing needed here. anything in this array will be showed as a search result.
for($i=0;$i<=count($folders)-1;$i++) {
$glob = glob($folders[$i]);
$files = array_merge($files, $glob[$i]);
}
echo "Search - $s<br><br>";
if(count($files) == 1) {
echo "<li><a href='$files[0]'>".heir($files[0])."</a></li>";
}
if(count($files) != 1) {
for($i=0;$i<=count($files)-1;$i++) {
echo "<li><a href='$files[$i]'>".heir($files[$i])."</a></li>";
}
}
if(count($files) == 0) {
echo "Sorry, no hits.";
}
?>
答案 3 :(得分:0)
接受的答案非常好,但它让我想到了岩石上的Spl迭代器。 Fabien Potencier解释了他如何在symfony中创建Finder类:
http://fabien.potencier.org/article/43/find-your-files
我也使用他的finder类,他们有一个非常漂亮的链接界面。
示例:强>
use Symfony\Component\Finder\Finder;
$finder = new Finder();
$finder->files()->in(__DIR__);
foreach ($finder as $file) {
print $file->getRealpath()."\n";
}
以及..
$finder->files()->name('*.php');
// or
$finder->files()->size('>= 1K')->size('<= 2K');
$finder->date('since yesterday');
文档:http://symfony.com/doc/2.0/cookbook/tools/finder.html
来自sf1.4框架的PHP5.2 +版本: http://svn.symfony-project.com/branches/1.4/lib/util/sfFinder.class.php
这个版本略有不同,而且不那么花哨,但也能完成这项工作。你需要创建一个sfException类,它是它与symfony框架的唯一搭配。您可以创建自己的sfException类:
class sfException extends Exception { }
可以在此处找到文档:http://www.symfony-project.org/cookbook/1_2/en/finder