php遍歷目錄
⑴ php中如何用遍歷目錄做站內搜索拜託各位大神
兄弟,你是想做站內搜索,但是是沒有必要去遍歷目錄的,因為這樣效率會非常低迅賣下。你想做搜索肯定是先要有數據源,畝茄逗然後再對數據源進行分析產生索引,以後納數所有的搜索都是建立在索引的基礎上的。
⑵ PHP如何遍歷指定文件夾,獲取所有文件列表並生成下載鏈接
試編寫代碼如下:
<?php
$dir="D:/WWW/ftp";//指定的路徑
$sitepath='http://localhost/ftp/';
//遍歷文件夾下所有文件
if(false!=($handle=opendir($dir))){
echo"$dir目錄下的文件列表:<BR/>";
$i=0;
while(false!==($file=readdir($handle))){
if($file!="."&&$file!=".."&&!is_dir($dir.'/'.$file)){
echo'<ahref="'.$sitepath.$file.'">'.$file.'</a><br/>';
}
}
//關閉句柄
closedir($handle);
}
?>
代碼中需要提示的是:
如果是運行於互聯網上,需要考慮文件的訪問安全性。
運行截圖:
⑶ php怎麼遍歷指定目錄下的文件(可指定文件類
遍歷目錄下文件,首先獲取該目錄下的所有文件名。
$folder='./folder/';
foreach(scandir($folder)AS$value){
if($value=='.'OR$value=='..')continue;
echo'文件名:'.$value." ";
}
⑷ 求PHP遍歷文件夾代碼
1樓的弱爆了..
現在都玩php5了..用scandir函數最方便.
<?php
$dir = "."; //當前目錄
list_file($dir);
function list_file($dir){
$list = scandir($dir); // 得到該文件下的所有文件和文件夾
foreach($list as $file){//遍歷
$file_location=$dir."/".$file;//生成路徑
if(is_dir($file_location) && $file!="." &&$file!=".."){ //判斷是不是文件夾
echo "------------------------sign in $file_location------------------";
list_file($file_location); //繼續遍歷
}
echo "<br/>";
}
}
?>
⑸ php寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾
最近剛寫的,可以遍歷指定目錄下的所有文件、文件夾、特定後綴的文件:
/**
*遍歷目錄
*@paramstring$dir絕對/相對路徑
*@paramstring$filter默認*返回所有文件及文件夾,*.php僅返回php文件,如果$patten為GLOB_BRACE可實現多文件篩選,如*.{php,html},返回php和html文件
*@paramconst$patten默認GLOB_BRACE,可選:GLOB_ONLYDIR,更多參數請參考手冊
*@paramstring/bool$nocache防止本次調用的結果緩存上次的結果,如果一個腳本僅調用一次本函數,則不用管,否則得設個值
*@returnarray
*/
functionglobdir($dir,$filter='*',$patten=GLOB_BRACE,$nocache=null){
static$file_arr=array();
isset($nocache)&&$file_arr=array();
if(!is_dir($dir))return;
if($patten==GLOB_ONLYDIR){
$code='if(is_dir($file)){$file_arr[]=$file;globdir($file,"*",GLOB_ONLYDIR);}';
}else{
$code='is_file($file)?$file_arr[]=$file:globdir($file,"'.$filter.'",'.$patten.');';
}
array_walk(glob("{$dir}/{$filter}",$patten),create_function('$file,$k,$file_arr',$code),&$file_arr);
if($filter!='*'){
array_walk(glob("{$dir}/*",GLOB_ONLYDIR),create_function('$dir,$k,$param','list($filter,$patten)=explode("|",$param);globdir($dir,$filter,$patten);'),"{$filter}|{$patten}");
}
return$file_arr;
}
⑹ PHP遍歷文件夾中內容並顯示出來會顯示._文件名,請問生么原因,謝謝,或者如何過濾掉
很正常啊,這是系統自帶的兩個特殊隱藏目錄。一個.是指代當前目錄本身,一個..指代上級目錄。平時隱藏了而已。你遍歷出來不想顯示直接在判斷條件里加如果目錄等於.或者..就不輸出,直接跳過就完了
⑺ php 循環遍歷文件夾下面的所有目錄及文件並且每個文件都寫入一句話
/****************************
*獲取目錄下的所有文件
*[$dir]文件夾路徑
****************************/
functiondeepScanDir($dir){
$fileArr=array();
$dirArr=array();
$dir=rtrim($dir,'//');
if(is_dir($dir)){
$dirHandle=opendir($dir);
while(false!==($fileName=readdir($dirHandle))){
$subFile=$dir.DIRECTORY_SEPARATOR.$fileName;
if(is_file($subFile)){
$fileArr[]=$subFile;
}
elseif(is_dir($subFile)&&str_replace('.','',$fileName)!=''){
$dirArr[]=$subFile;
$arr=deepScanDir($subFile);
$dirArr=array_merge($dirArr,$arr['dir']);
$fileArr=array_merge($fileArr,$arr['file']);
}
}
closedir($dirHandle);
}
returnarray(
'dir'=>$dirArr,
'file'=>$fileArr
);
}
/****************************
*將內容寫入文件
*[$filename]文件路徑
*[$contents]文件內容
*[$type]讀寫類型
****************************/
functionwriteFileContents($filename,$contents,$type='a'){
if(!($fd=fopen($filename,$type)))
returnFALSE;
if(!fwrite($fd,$contents." ")){
fclose($fd);
returnFALSE;
}
fclose($fd);
returntrue;
}
#示例:
$dir="/usr/local/php/test/";
$dirFiles=deepScanDir($dir);
if(!empty($dirFiles['file'])){
foreach($dirFiles['file']as$file){
writeFileContents($file,"Hello",$type='a+');
}
}
⑻ PHP遍歷目錄下的圖片,按順序顯示問題
<?php
error_reporting(0);
echo培和鉛"<html><head><title>圖片</title></head><bodybgcolor=000000><center><fontsize=2color=red>";//輸出html相關代碼
$page棚配=$_GET['page'];//獲取當前頁數
$max=3;//設置每頁顯示圖片最大張數
$dir="./image/";
$handle=opendir($dir);//當前目錄
while(($file=readdir($handle))!==false){//遍歷該php文件所在目錄
list($filesname,$kzm)=explode(".",$file);//獲取擴展名
if($kzm=="gif"or$kzm=="jpg"or$kzm=="JPG"or$kzm=="png"){//文件過濾
if(!is_dir('./'.$file)){//文件夾過濾
$array[]=$file;//把符合條件的文件名存入數組
$i++;//記錄圖片總張數
}
}
}
for($j=$max*$page;$j<($max*$page+$max)&&$j<$i;++$j){//循環條件控制顯示圖片張數
echo"<imgwidht=200height=200src=image\".$array[$j].">"."配好<br>";//輸出圖片數組
}
$Previous_page=$page-1;
$next_page=$page+1;
if($Previous_page<0){
echo"上頁";
echo"<ahref=?page=$next_page>下頁</a>";
}elseif($page<=$i/$max){
echo"<ahref=?page=$Previous_page>上頁</a>";
echo"<ahref=?page=$next_page>下頁</a>";
}else{
echo"<ahref=?page=$Previous_page>上頁</a>";
echo"下頁";
}
echo"</center></body></html>";
?>
⑼ PHP遍歷當前目錄下json文件,並顯示其中的指定內容。
<?php
header('Content-type:text/html;charset=utf-8');
$i = 1;
foreach(glob('*.json') as $txt)
{
echo '芹早第'.$i.'個文件'.basename($txt).':';
$arr=json_decode(file_get_contents($txt),true);
echo $arr[0]." ".$arr[1]." ".$arr[2]." "配首枝;
$i++;
echo '<hr/培敏>';
}
⑽ PHP 如何遍歷一個目錄 要求剛出來只顯示第一級的文件夾和文件 當點擊了文件夾的時候顯示下級文件 要代碼!
把變數填充到模板就自己搞定了,難道遇到問題,就什麼都要別人給你搞定,自己能搞定的,就自己搞定。
<?php
error_reporting(E_ALL ^ E_NOTICE);
@header("Content-Type: text/html; charset=utf-8");
if($_GET['rootdir']){
$rootdir = $_GET['rootdir'];
}else{
$query = trim($_SERVER['QUERY_STRING'])!=''?queryCode($_SERVER['QUERY_STRING']):array();
$rootdir = $query['rootdir'];
print_r($query);
echo '<hr>';
$showpath = $query['showpath'];//選擇的路徑
$showpathData = explode('轎孝團/',$showpath);
$showpathData = array_diff($showpathData, array(''));
$showpathData = array_values($showpathData);
print_r($showpathData);
echo '<hr>';
}
(!$rootdir || !is_dir($rootdir)) && $rootdir = dirname(__FILE__);//定義默認根路徑
$levl=0;
$nowDir = $query['rootdir'].$query['showpath'];
!$nowDir && $nowDir = $rootdir;
$queryData = array();
$queryData['rootdir'] = $rootdir;
function read_dir($path){
strpos($path,'..') !== false && exit('Forbidden');
$return=array();
$return['dirs']=array();
$return['files']=array();
if(is_dir($path)){
$childs=@opendir($path);
while($child=@readdir($childs)){
if($child!="." && $child!=".." && $child!="" && $child!="Thumbs.db"){
if(is_dir("$path/$child")){
$return['dirs'][] = $child;
}else{
$return['files'][] = $child;
}
}
}
@closedir($childs);
}
count($return['dirs']) && sort($return['dirs']);
count($return['files']) && sort($return['files']);
return $return;
}
function levltext($levl){
$text='';
for($i=0;$i<$levl;$i++){
$text.='|===';
}
return $text;
}
function queryCode($query,$key=''){
//因為要把實際路徑用作參數來傳輸,為慎瞎了安全,所以將參數加密
!$key && $key = '******'閉橘;//加密密匙
//json_encode,json_decode需要PHP 5 >= 5.2.0
if(is_array($query)){
return StrCode(json_encode($query),'ENCODE',$key);
}else{
return json_decode(StrCode($query,'DECODE',$key),TRUE);
}
}
function StrCode($string,$action='ENCODE',$key=''){
//base64+$key加解密
$string.="";
$action != 'ENCODE' && $string = base64_decode($string);
$code = '';
$key = md5($key);
$keylen = strlen($key); $strlen = strlen($string);
for ($i=0;$i<$strlen;$i++) {
$k = $i % $keylen;
$code .= $string[$i] ^ $key[$k];
}
return ($action!='DECODE' ? base64_encode($code) : $code);
}
function printTable($ePath=''){
global $showpathData,$queryData,$levl,$rootdir;
$dfData = read_dir($rootdir.'/'.$ePath);
$_tDir = $showpathData[$levl];
$levl++;
$levltext = levltext($levl);
foreach($dfData['dirs'] as $_dir){
$queryData['showpath'] = $ePath.'/'.$_dir;
$queryString = queryCode($queryData);
$ext = ($_dir == $_tDir)?'--':'++';
?>
<tr>
<td><?php echo $levltext.$ext;?><a href="?<?php echo $queryString;?>"><?php echo $_dir;?></a></td>
</tr>
<?php
if($_dir == $_tDir){
printTable($ePath.'/'.$_dir);
}
}
foreach($dfData['files'] as $_file){
?>
<tr>
<td><?php echo $levltext;?><?php echo $_file;?></td>
</tr>
<?php
}
}
//=======================================================================
print <<<EOT
<form action='' method=get>
當前打開:{$nowDir}<br>
主路徑:<input value="$rootdir" name='rootdir' size=70>
<input type=submit>
</form>
<hr>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td><b>路徑</b></td>
</tr>
EOT;
printTable();
print <<<EOT
</table>
EOT;
?>