首页 > 代码库 > 根据目录名将某个指定目录下的所有文件名以一定的规则插入到一个表中

根据目录名将某个指定目录下的所有文件名以一定的规则插入到一个表中

  最近项目遇到一个需求,就是把某个目录的所有文件的名称以一定的规则插入到一个表中,首先来看下badge表结构:

  技术分享

  目录名称为‘Picture/Badge/‘,文件的命名也是以一定的规则来命名的,例如: balldate_1_1_sl.png,match_1_10_1_1_gr.png,apply_1_50_sl.png,,,如果把balldate_1_1插入到

   badge表,那么type=1,first_index=1,second_index=1,path=‘Picture/Badge/balldate_1_1_sl.png‘;

  1.获取这个目录下的所有文件的名称,

    $file_names = scandir(public_path(‘/Picture/Badge‘));

    unset($file_names[0],$file_name2[1]);(因为$file_names目录下的前2个目录是.和..文件)

    $data_array = array();

    foreach($file_names as $key => $file_name){

      $new_file = substr($file_name,0,strrpos($file_names,‘.‘);//去掉balldate_1_1.png的后缀.png

      $explode_data = http://www.mamicode.com/explode(‘_‘,$new_file); //将

      $data[‘type‘] = $explode_data[0];

      $data[‘first_index‘] = $explode_data[1];

      $data[‘second_index‘] = $explode_data[2];

      $data[‘is_highlight‘] = $explode_data[3] == ‘sl‘ ? 1 : 0;

      $data[‘path‘] = sprintf(‘/Upload/Picture/Badge/%s‘,$file_name);

      $data_array[] = $data;

    }

    DB::table(‘badge‘)->insert($data_array);

 

 

    

根据目录名将某个指定目录下的所有文件名以一定的规则插入到一个表中