在实验记录一中我们提到了一个获取所有txt格式的IT新闻内容的方法fileStr,在获取内容的同时我们也计算出了每篇新闻的长度(包括标点符号):
//获取每篇文档的内容和长度
static public function fileStr(){
$file_dir=self::fileDir(TEXT_PATH);
$str=array(); //存储文档和长度
for($i=0;$i<count($file_dir);$i++){
$str[$i]['con']=file_get_contents(TEXT_PATH.'/'.$file_dir[$i]); //读取文本
$str[$i]['con']=preg_replace('/\s+/','',$str[$i]['con']); //消除空格,这样做就不适合英文检索
$str[$i]['len']=mb_strlen($str[$i]['con'],'gbk'); //文本长度
}
return $str;
}
fileStr方法调用了工具类定义的一个静态方法fileDir,fileDir返回的是IT新闻目录下所有文件的文件名。fileStr方法通过一个for循环获取每篇文档的内容,并把它们放入一个二维数组$str中,其中$str[i]['con']保存大的是第i篇文档的内容,$str[i]['len']保存的是第i篇文档的长度:
fileDir方法的代码如下:
//取出所有文档目录
static public function fileDir($path){
$files_name=array();
$dir=opendir($path);
while (false!==($file=readdir($dir))) {
if ($file != "." && $file != ".."){
$files_name[]=$file;
}
}
closedir($dir);
return $files_name;
}
该方法需要传递一个参数,该参数保存的是新闻文件的目录。通过opendir目录函数读取目录文件,并把文件名存在数组$file_name中: