成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP類搜索定位目錄樹的具體實現方式解析

開發 后端
PHP類搜索定位目錄樹首先應該初始化一個新的File_Find()對象,然后產生它的一個兩元素的層級結構“數組表(array map)”。

大家現在也許對PHP語言比較感興趣,因為它能夠幫助我們很輕松的建設一個功能強大的網站。今天我們將向大家介紹的是有關PHP類搜索定位目錄樹的方法。大多數時候,在嵌套的PHP結 構里進行迭代需要你寫出能夠一個按順序穿過層級、并檢查其中每一個元素的遞歸函數。

#t#但是遞歸函數是一個很復雜而且雜亂的東西,大多數開發者(包括我自己) 并不是真正喜歡使用它們。這就是為什么當我的上一個項目需要為一個單獨文件掃描一個目錄層級時(一個典型的遞歸函數任務),我甚至沒有考慮過要循環自己的 代碼。我取而代之地直接使用了PEAR和它的File_Find類,免除了我搜索多層目錄結構的痛苦。

File_Find類是為了能讓你真 正做好兩件事情而設計的。***,它可以讓你掃描一個目錄樹,然后將其轉換成為PHP結構——一個嵌套的數組——它反映了原始層級的父子關系。第二,它可以 讓你在一個目錄樹下搜索一個或多個類型相匹配的文件。這種類型可以是一個簡單的字符串,也可以是一個復雜的Perl規則的表達式;File_Find能夠 處理上述兩種中的任意一種格式,并將返回一個包括了每一對的詳細文件和路徑信息的數組。

一開始,手動安裝程序包,你可以下載它,然后將其內容提取到PEAR根目錄下,也可以利用PEAR安裝程序。

接下來,創建以下PHP腳本(列表A),并將它保存在你的Web服務器的文件根目錄下:

PHP類搜索定位目錄樹列表A

 

  1. < ?php  
  2. // include class  
  3. include(”Find.php”);  
  4. // initialize finder  
  5. $finder = new File_Find();  
  6. // read directory tree and print  
  7. $tree = $finder->mapTree(”/tmp”);  
  8. print_r($tree);  
  9. ?> 

 

在此,我初始化了一個新的File_Find()對象, 并用一個目錄路徑調用其mapTree()方法。mapTree()方法讀取指定的目錄,然后產生它的一個兩元素的層級結構“數組表(array map)”。此數組中***個元素列出了所找到的所有目標目錄下的子目錄,而第二個元素列出了找到的所有文件。然后就有可能掃描這些序列,在應用程序中使用 它們了——例如,重建目錄樹,或者在自定義標準的基礎上篩選文件和目錄。

列表B是以上腳本輸出的一個例子:

PHP類搜索定位目錄樹列表B

 

  1. Array  
  2. (  
  3. [0] => Array  
  4. (  
  5. [0] => /tmp  
  6. [1] => /tmp/dummyA  
  7. [2] => /tmp/dummyB  
  8. [3] => /tmp/dummyA/dummyC  
  9. )  
  10. [1] => Array  
  11. (  
  12. [0] => /tmp/data.txt  
  13. [1] => /tmp/dummyB/metoo.mp3  
  14. [2] => /tmp/dummyB/track.dat  
  15. [3] => /tmp/dummyA/dummyC/parrot.gif  
  16. )  

 

你也可以用另一種方式,用mapTreeMultiple()方法,它遞歸讀取指定的目錄,產生一個復制其樹形結構的嵌套數組。列表C為你展示了一個例子。

PHP類搜索定位目錄樹列表C

 

  1. < ?php  
  2. // include class  
  3. include(”Find.php”);  
  4. // initialize finder  
  5. $finder = new File_Find();  
  6. // print recursive directory tree  
  7. $tree = $finder->mapTreeMultiple(”/tmp”);  
  8. print_r($tree);  
  9. ?> 

 

列表D顯示了輸出結果:

PHP類搜索定位目錄樹列表D

 

  1. Array  
  2. (  
  3. [0] => data.txt  
  4. [dummyA] => Array  
  5. (  
  6. [dummyC] => Array  
  7. (  
  8. [0] => parrot.gif  
  9. )  
  10. )  
  11. [dummyB] => Array  
  12. (  
  13. [0] => metoo.mp3  
  14. [1] => track.dat  
  15. )  

 

提示:你可以給mapTreeMultiple()加上一個可選的參數,限定它在執行遞歸時向下查詢的層數。

用glob()方法,你可以在指定目錄下搜索與特定Perl兼容型的規則表達式匹配的文件。請看一下列表E。

PHP類搜索定位目錄樹列表E

 

  1. < ?php  
  2. // include class  
  3. include(”Find.php”);  
  4. // initialize finder  
  5. $finder = new File_Find();  
  6. // search for matching files in named directory  
  7. $results = $finder->glob(”/mp3/i”, “/usr/local/stuff”, “perl”);  
  8. print_r($results);  
  9. ?> 

 

在這里,glob()方法訪問指定目錄下所有名稱中帶有字符串mp3的文件。注意我對修飾符i的使用,它使得搜索沒有大小寫之分,還有我使用了第三個自變量,告訴類要使用Perl regex函數,而不是默認的PHP函數。

File_Find類由于它的search()方法而真正發揮作用起來,這個方法結合了mapTreeMultiple()和glob()方法的能力進行多層目錄搜索。列表F中是一個例子。

PHP類搜索定位目錄樹列表F

 

  1. < ?php  
  2. // include class  
  3. include(”Find.php”);  
  4. // initialize finder  
  5. $finder = new File_Find();  
  6. // search for matching files  
  7. // in named directory and subdirectories  
  8. $results = $finder->search(”/exe/i”, “/usr/local/winstuff”, “perl”);  
  9. print_r($results);  
  10. ?> 

 

列表G顯示了輸出的一個樣本:

PHP類搜索定位目錄樹列表G

 

  1. Array  
  2. (  
  3. [0] => /usr/local/winstuff/4HELP.EXE  
  4. [1] => /usr/local/winstuff/ARJ.EXE  
  5. [2] => /usr/local/winstuff/bzip2.exe  
  6. [3] => /usr/local/winstuff/CRLF.EXE  
  7. [4] => /usr/local/winstuff/DECODE.EXE  
  8. [5] => /usr/local/winstuff/GREP.EXE  
  9. [6] => /usr/local/winstuff/GPG/gpg.exe  
  10. [7] => /usr/local/winstuff/GPG/uninst-gnupg.exe  
  11. [8] => /usr/local/winstuff/GPG/WinPT.exe  
  12. [9] => /usr/local/winstuff/Fprot/F-PROT.EXE  

 

這就是你的遞歸目錄查詢,僅僅只有四行代碼!

正如你所看到的那樣,File_Find使得簡單有效地完成一個相對復雜的任務成為可能,而且你會感到最小的壓力,這也就是我為什么極力向你推薦它的原因。下次當你需要在PHP類搜索定位目錄樹上執行一個文件查找操作時,不妨你自己嘗試一下。祝你編程快樂!

責任編輯:曹凱 來源: yanzhilu.com
相關推薦

2009-11-23 18:39:17

PHP重定向

2009-11-25 11:33:26

PHP驗證表單

2009-11-24 15:01:59

PHP通用文件上傳類

2009-11-24 14:45:08

PHP批量上傳圖片

2009-11-25 14:00:37

PHP函數asort(

2009-11-25 15:26:03

PHP中反饋表單

2009-11-23 16:09:50

PHP實現偽靜態化頁面

2009-11-24 15:23:50

PHP文件上傳進度條

2009-11-25 14:31:43

PHP自然語言倒序

2009-11-25 15:50:53

PHP刪除數組空白元素

2009-11-23 19:33:12

PHP5多態性

2009-12-01 19:08:18

PHP外部變量

2009-11-30 16:08:32

PHP addslas

2009-11-25 11:42:34

PHP判斷數組為空

2009-11-25 15:35:24

PHP實現站內搜索引擎

2009-11-27 13:14:07

PHP函數strist

2009-11-23 17:16:54

PHP獲取IP

2009-11-24 14:22:03

基于PHP的AJAX技

2009-12-02 18:51:12

PHP分頁類

2009-12-04 17:06:47

PHP讀取Excel文
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久婷婷国产综合精品电影 | 中文字幕一区二区三区日韩精品 | 天天av网 | 国产成人免费视频网站高清观看视频 | 免费视频久久久久 | 天堂色网| 三级高清| 亚洲av毛片 | 一级黄色片免费 | 亚洲精品视频在线 | a视频在线 | 午夜视频在线 | 国产二区精品视频 | 亚洲国产精品久久久 | 91精品国产91久久久久游泳池 | 婷婷综合色 | 免费激情av | 成人国产在线观看 | 精品视频一区二区三区在线观看 | 成人在线免费网站 | 一区二区三区精品在线 | 亚洲视频在线观看一区二区三区 | 国产在线播放一区二区三区 | 第四色狠狠| 久久精品aaa| 国产精品美女久久久久久久网站 | 国产剧情久久 | 人人草天天草 | 欧美色综合一区二区三区 | 成人午夜激情 | 国产一区精品 | 亚洲欧洲成人在线 | 国产精品久久久久一区二区三区 | 国产激情免费视频 | 在线资源视频 | 欧美一级片黄色 | 欧美天堂在线观看 | 精品国产一区二区三区成人影院 | 日韩三级在线 | 欧美性影院 | 综合色婷婷 |