- 论坛徽章:
- 0
|
php从文件中搜索关键字方法 - <?php
- set_time_limit("600"); //以秒为单位,所以是设10分钟为限
- $keyword = trim($_POST["keyword"]); //要搜索的关键字
- if($keyword == ""){
- echo "您要搜索的关键字不能为空!<a href=../search/>返回</a>";
- exit(); //结束程序
- }
- //$dir是搜索的目录 $keyword是关键字 $array是存放的数组
- //遍历所有文件
- function listFiles($dir,$keyword,$array){
- global $array; //把传过来的数组定义成全局的,在方法外面就能从数组里取到值了
- $handle = opendir($dir);
- while (false !== ($file = readdir($handle))){
- if ($file!="." && $file!=".."){
- //如果还是目录继续搜索
- if(is_dir("$dir/$file")){
- listFiles("$dir/$file",$keyword,$array);
- }
- else{
-
- //读取文件内容
- $data = fread(fopen("$dir/$file","r"),filesize("$dir/$file"));
- //只在<body>和</body>之间搜索关键字,
- if (eregi("<body([^>]+)>(.+)</body>",$data,$b)){
- $body = strip_tags($b["2"]);
- }
- else{
- $body = strip_tags($data);
- }
- //不搜索自身
- if($file != "search.php"){
- //就去干是否匹配
- if (eregi("$keyword",$body)){
- //从搜索页面里提取出<title>和</title>里的内容,来作为标题
- if (eregi("<title>(.+)</title>",$data,$m)){
- $title = $m["1"];
- }
- else{
- $title = "没有标题";
- }
- //把搜索到的 标题和页面地址,存放到数组里
- //$dir/$file 是搜索到的页面地址
- $array[] = "$dir/$file $title";
-
- }
- }
- }
- }
- }
-
-
- }
- //定义数组
- $array = array();
- //执行函数
- listFiles(".","$keyword",$array);
- //打印搜索结果
- foreach ($array as $value){
- //拆开
- list($filedir,$title) = split("[ ]",$value,"2");
- //输出
- echo "<a href=$filedir target=_blank>$title</a>" . "<br/>\n";
- }
复制代码 http://www.97xxoo.org/article/1/2008/20081113330.shtml |
|