php 目录递归遍历程序
一个朋友写的一款目录查找程序,可以根据用户输入的目录名称查到到指定目录或文件,同时还支持锁定目录,有需要的朋友可以参考一下,代码如下:
<?php class Finder{ private $key ; private $result ; private $previewLen = 50; private $file_type = array ( 'html' , 'php' , 'htm' , 'txt' ); function __construct( $key ){ $this ->key = $key ; } function find( $folder ){ $this ->result = array (); if ( is_array ( $folder )){ foreach ( $folder as $f ){ $this ->_find_in_folder( $f ); } } else { $this ->_find_in_folder( $folder , true); } return $this ->result; } function _find_in_folder( $folder , $bSub =false){ foreach ( glob ( $folder .DIRECTORY_SEPARATOR. '*' ) as $f ){ if ( is_file ( $f )){ $extend = explode ( "." , $f ); $type = strtolower ( end ( $extend )); if (in_array( $type , $this ->file_type)){ $fd = file_get_contents ( $f ); $pos = strpos ( $fd , $this ->key); if ( $pos !==false){ $end = $pre = '...' ; $pos -= floor ( $this ->previewLen/2); if ( $pos <0){ $pre = '' ; $pos = 0; } $findata = substr ( $fd , $pos , $this ->previewLen); $findata = str_replace ( $this ->key, '<span style="color:red">' . $this ->key. '</span>' , $findata ); $this ->result[] = array ( 'path' => $f , 'preview' => $pre . $findata . $end ); } } continue ; } if ( $bSub && is_dir ( $f )){ $this ->_find_in_folder( $f ,true); } } } } $cur_path = dirname( __FILE__ ); if (isset( $_GET [ 'a' ])){ $key = $_POST [ 'key' ]; if (! $key ) die ( '关键字不能为空' ); $cf = new Finder( $key ); $in_folder = array (); $limit_folder = $_POST [ 'limit_folder' ]; if ( $limit_folder ==1){ if (!isset( $_POST [ 'folder' ]) || ! $_POST [ 'folder' ]) die ( '限定目录不能为空' ); $in_folder = $_POST [ 'folder' ]; $ret = $cf ->find( $in_folder ); } else { $ret = $cf ->find( $cur_path ); } echo "搜索[$key]结果:<br />" ; if (! $ret ) die ( '无' ); foreach ( $ret as $p => $f ){ echo "$p. t$f[path] => $f[preview] <br />n" ; } exit (); } $folder = array (); function readFolder( $path ){ global $folder ; $folder [] = $path ; foreach ( glob ( $path .DIRECTORY_SEPARATOR. '*' ) as $f ){ if ( is_dir ( $f )) { readFolder( $f ); } } } readFolder( $cur_path ); $folder_op = array (); foreach ( $folder as $path ){ $folder_op [] = "<option value=" $path ">$path</option>" ; } //开源代码phpfensi.com $folder_op = implode( $folder_op ); ?> <form action= "?a=do" method= "post" > 搜索关键字:<input type= "text" name= "key" value= "" ><br /> 搜索目录:<select name= "folder[]" multiple= "true" ><?php echo $folder_op ?></select><br /> 是否限定以上选择的目录:<input type= "radio" name= "limit_folder" value= "1" />是 <input type= "radio" name= "limit_folder" value= "0" checked= "true" />否 <input type= "submit" value= "搜索" /> </form>查看更多关于php 目录递归遍历程序 - php文件操作的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did27785