[英]Recursive Directory Searching PHP with Regex
如果我需要遞歸搜索某些目錄以便找到.something文件,該怎么辦?
到目前為止我有這個代碼:
$dir_iterator = new RecursiveDirectoryIterator('path/');
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $filename) {
if(strpos($filename, ".apk")){
$page->addToBody(substr($filename, 2)."</br>");
$filename = substr($filename, 2);
}
}
這適用於返回目錄中唯一的.apk文件,但是如果找到多個文件,我希望能夠找到特定文件。
例如,我想說找到包含“hello”的所有文件名,並以.apk結尾。
使用Glob()我做了這個很棒的工作:
glob('./'path'/*{'Hello'}*.apk',GLOB_BRACE);
但它不是遞歸的。 並取決於指定的正確目錄。 任何幫助將非常感謝。
您可以使用正則表達式代替strpos(),而不是:
[...]
if(preg_match('/.*hello.*\.apk$/', $filename))
[...]
此示例表示“* hello * .apk”。 所以一個字符串在其中某處有“hello”並以“.apk”結尾。
有關詳細信息,請參閱PHP preg_match() 。
嘗試搜索兩個:
if(strpos($filename, ".apk") !== false && strpos($filename, "Hello") !== false){
!== false是必要的,否則將不會返回Hello.apk
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.