PHP類(lèi)搜索定位目錄樹(shù)的實(shí)現(xiàn)方法

本篇內(nèi)容介紹了“PHP類(lèi)搜索定位目錄樹(shù)的實(shí)現(xiàn)方法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在交口等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),交口網(wǎng)站建設(shè)費(fèi)用合理。

大家現(xiàn)在也許對(duì)PHP語(yǔ)言比較感興趣,因?yàn)樗軌驇椭覀兒茌p松的建設(shè)一個(gè)功能強(qiáng)大的網(wǎng)站。今天我們將向大家介紹的是有關(guān)PHP類(lèi)搜索定位目錄樹(shù)的方法。大多數(shù)時(shí)候,在嵌套的PHP結(jié) 構(gòu)里進(jìn)行迭代需要你寫(xiě)出能夠一個(gè)按順序穿過(guò)層級(jí)、并檢查其中每一個(gè)元素的遞歸函數(shù)。

但是遞歸函數(shù)是一個(gè)很復(fù)雜而且雜亂的東西,大多數(shù)開(kāi)發(fā)者(包括我自己) 并不是真正喜歡使用它們。這就是為什么當(dāng)我的上一個(gè)項(xiàng)目需要為一個(gè)單獨(dú)文件掃描一個(gè)目錄層級(jí)時(shí)(一個(gè)典型的遞歸函數(shù)任務(wù)),我甚至沒(méi)有考慮過(guò)要循環(huán)自己的 代碼。我取而代之地直接使用了PEAR和它的File_Find類(lèi),免除了我搜索多層目錄結(jié)構(gòu)的痛苦。

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

一開(kāi)始,手動(dòng)安裝程序包,你可以下載它,然后將其內(nèi)容提取到PEAR根目錄下,也可以利用PEAR安裝程序。

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

PHP類(lèi)搜索定位目錄樹(shù)列表A

< ?php  // include class  include(”Find.php”);  // initialize finder  $finder = new File_Find();  // read directory tree and print  $tree = $finder->mapTree(”/tmp”);  print_r($tree);  ?>

在此,我初始化了一個(gè)新的File_Find()對(duì)象, 并用一個(gè)目錄路徑調(diào)用其mapTree()方法。mapTree()方法讀取指定的目錄,然后產(chǎn)生它的一個(gè)兩元素的層級(jí)結(jié)構(gòu)“數(shù)組表(array map)”。此數(shù)組中***個(gè)元素列出了所找到的所有目標(biāo)目錄下的子目錄,而第二個(gè)元素列出了找到的所有文件。然后就有可能掃描這些序列,在應(yīng)用程序中使用 它們了&mdash;&mdash;例如,重建目錄樹(shù),或者在自定義標(biāo)準(zhǔn)的基礎(chǔ)上篩選文件和目錄。

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

PHP類(lèi)搜索定位目錄樹(shù)列表B

Array  (  [0] => Array  (  [0] => /tmp  [1] => /tmp/dummyA  [2] => /tmp/dummyB  [3] => /tmp/dummyA/dummyC  )  [1] => Array  (  [0] => /tmp/data.txt  [1] => /tmp/dummyB/metoo.mp3  [2] => /tmp/dummyB/track.dat  [3] => /tmp/dummyA/dummyC/parrot.gif  )  )

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

PHP類(lèi)搜索定位目錄樹(shù)列表C

< ?php  // include class  include(”Find.php”);  // initialize finder  $finder = new File_Find();  // print recursive directory tree  $tree = $finder->mapTreeMultiple(”/tmp”);  print_r($tree);  ?>

列表D顯示了輸出結(jié)果:

PHP類(lèi)搜索定位目錄樹(shù)列表D

Array  (  [0] => data.txt  [dummyA] => Array  (  [dummyC] => Array  (  [0] => parrot.gif  )  )  [dummyB] => Array  (  [0] => metoo.mp3  [1] => track.dat  )  )

提示:你可以給mapTreeMultiple()加上一個(gè)可選的參數(shù),限定它在執(zhí)行遞歸時(shí)向下查詢(xún)的層數(shù)。

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

PHP類(lèi)搜索定位目錄樹(shù)列表E

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

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

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

PHP類(lèi)搜索定位目錄樹(shù)列表F

< ?php  // include class  include(”Find.php”);  // initialize finder  $finder = new File_Find();  // search for matching files  // in named directory and subdirectories  $results = $finder->search(”/exe/i”, “/usr/local/winstuff”, “perl”);  print_r($results);  ?>

列表G顯示了輸出的一個(gè)樣本:

PHP類(lèi)搜索定位目錄樹(shù)列表G

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

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

正如你所看到的那樣,F(xiàn)ile_Find使得簡(jiǎn)單有效地完成一個(gè)相對(duì)復(fù)雜的任務(wù)成為可能,而且你會(huì)感到最小的壓力,這也就是我為什么極力向你推薦它的原因。下次當(dāng)你需要在PHP類(lèi)搜索定位目錄樹(shù)上執(zhí)行一個(gè)文件查找操作時(shí),不妨你自己嘗試一下。

“PHP類(lèi)搜索定位目錄樹(shù)的實(shí)現(xiàn)方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前題目:PHP類(lèi)搜索定位目錄樹(shù)的實(shí)現(xiàn)方法
文章鏈接:http://muchs.cn/article18/ijdogp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站營(yíng)銷(xiāo)、響應(yīng)式網(wǎng)站、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)