联系信息

php批量读取txt文件并写入mysql

2022-02-08 12:16 By 致远 1361
当前位置: 企业网站建设 > ThinkPHP > php批量读取txt文件并写入mysql

用了147seo的采集工具采集数据,它与火车头和八爪鱼等不一样,采集到的每一篇文章都单独保存成一个txt文件,文章标题即txt的文件名称,文章内容就写入txt中。对于这样的数据处理之前并没有做过,但大致思路就是通过opendir和readdir遍历文件夹,再利用fread、file_get_contents等读取内容即可。

我就用file_get_contents了。核心代码如下:

//读取文件夹
    public function read_file(){
        header("content-type:text/html;charset=utf-8");
        // 获取文件夹中的所有txt文件名
        $dir = "art/"; //这里输入其他路径
        $handle = opendir($dir.".");
        $row = array();
        while (false!=($file=readdir($handle))){
            if($file!="."&&$file!=".."){
                $row[]['name'] = $file;//输出文件名
            }
        }
        $files = [];
        foreach ($row as $k => $v) {
            $files[] = iconv('GBK','utf-8',$row[$k]['name']);
            //这里需要转码,要不会出现乱码
        }
        //$files是该文件夹下所有txt文件的名字
        foreach ($files as $k => $v) {
            $this->read_txt($files[$k]);//这里循环读取每一个txt文件内的内容并做数据库处理
        }
        closedir($handle);
        exit;
    }
//读取txt文件
    protected function read_txt($file_name){
        header("content-type:text/html;charset=utf-8");
        $fname = 'http://www.multi.com/art/'.$file_name;
        $fname=iconv('utf-8','GBK',$fname);
        //这里需要再次转码,要不get不到文件
        $file_name=preg_replace('/\(.*?\)|(.*?)|\s+|\.txt|\.|_|【.*?】|"|\'|\[.*?\]|-|「.*?」|『.*?』|\d+月\d+日|.*?\|/i','',$file_name);
        //去除一些标题中的内容,这个根据你的需要修改或者删除
        $cont=file_get_contents($fname);
        $cont=preg_replace('/原标题.*?<|责任编辑.*</','<',$cont);
        //简单去除一些正文内容,根据你的需要修改或删除
        $arr=array(
            'title'=>removeEmojiChar($file_name),
            'cont'=>removeEmojiChar($cont)
        );
        M('Article')->add($arr);
        //写入数据库
     }
重点是两次iconv转码需要注意一下。


© 致远 2022-02-08,原创内容,转载请注明出错:php批量读取txt文件并写入mysql

留下您的评论

>