php批量重命名文件

来源:互联网 发布:买卖数据 编辑:程序博客网 时间:2024/05/29 11:08
<?php/** * 1) 通过读取csv文档(product_all.csv)中的产品编号获取目录1和目录2下图片对应编号的目录 *(目录1下图片路径:../imagezoom/id_1/image_xxx.jpg, * 目录2下图片路径:../show/id_1/image_xxx.jpg),并将目录1和目录2下对应产品编号的文件夹 * 重命名为重新生成的编号,同时将获取到的数据和修改的数据导入新的csv文档(new.csv)中 * 2) 通过读取数据库中的 productimage 表 将数据中产品编号按①中修改后导入到 * 新的csv文件(image_processed.csv)中 *///要把字符转换成utf-8编码,首先当前页面也必须是utf-8的编码,否则会报错$directory_1 = 'D:/数据/images/test/imagezoom'; //目录1$directory_2 = 'D:/数据/images/test/show';//目录2$handlefile_0 = 'D:/数据/images/test/product_all.csv'; //商品数据$handlefile_1 = 'D:/数据/images/test/new.csv'; //用来接收重新编号过的商品数据$file_0=fopen(iconv('UTF-8','gbk',$handlefile_0),'r');$file_1 = fopen(iconv('UTF-8','gbk',$handlefile_1),'w');require('../php_connect_test/connect_test.php');//数据库连接$handlefile_image = 'D:/数据/images/test/image.csv';//用来读取表头的文件 全部内容:proImageId,piProductId,image,imageType (只有一行数据,这行代码可有可无)$file_image = fopen(iconv('UTF-8','gbk',$handlefile_image),'r');$handlefile_image_processed = 'D:/数据/images/test/image_processed.csv';  //接收 productimage 表处理后数据$file_image_processed = fopen(iconv('UTF-8','gbk',$handlefile_image_processed),'w');$listline = 0;while(!feof($file_0)){$data = fgetcsv($file_0);if($data){$suk = 10000 + $listline;$result = mysqli_query($conn,'SELECT * from productimage pi where piProductId='.$data[0]); //查询if(intval($listline)>0){while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){$row['piProductId']=$suk;//print_r($row);fputcsv($file_image_processed,$row);}$imagezoom_dir = $directory_1.'/'.$data[0];$show_dir = $directory_2.'/'.$data[0];$new0_dir = $directory_1.'/'.$suk;$new1_dir = $directory_2.'/'.$suk;if(!file_exists(iconv("utf-8", "gbk", $new0_dir))){rename(iconv("utf-8", "gbk", $imagezoom_dir),iconv("utf-8", "gbk", $new0_dir));rename(iconv("utf-8", "gbk", $show_dir),iconv("utf-8", "gbk", $new1_dir));}$data[0] = $suk;$headImage = explode('/',substr($data[10],strlen('/productImg/show/'))); // 路径:/productImg/show/ 为 product_all.csv 中第11列的部分字段 格式如:/productImg/show/10913655629/587c7f2cNd6376666.jpg,该行代码通过 "/" 分割除 "/productImg/show/" 外的字段为数组$headImage[0] = $data[0]; // 将重新编号后的产品编号传给$headImage 用于重新定义 product_all.csv 中的第11个字段$data[10] = '/productImg/show/'.implode('/',$headImage);}else{fputcsv($file_image_processed,fgetcsv($file_image));}print_r($data[0]);fputcsv($file_1,$data);}print_r('<br>');$listline++;}fclose($file_1);fclose($file_0);

0 0