PHP批量修改文件名称的方法分析


Posted in PHP onFebruary 27, 2017

本文实例讲述了PHP批量修改文件名称的方法。分享给大家供大家参考,具体如下:

在这里我们利用一个战地自己写的一个例子来具体分析一下利用PHP批量修改文件名称的思路和注意事项。

从这个例子里你将会看到,PHP如何判断一个路径是不是目录,如何用PHP取得路径中的文件名称和文件的扩展名,随机函数rand的基本应用,以及这个程序的核心内容递归函数的基本应用

程序功能:利用PHP目录和文件函数遍历用户给出目录的所有的文件和文件夹,修改文件名称;

首先判断用户给出的目录是不是一个合法目录;

我们这里只是修改狭义的文件名称(不包括目录),所以在程序中一定要判断是不是目录,如果是目录我们就打开这个目录——从而实现遍历目录下的所有文件。如果不是我们就用一个随机的名称修改原来的文件名(用随机数做名称其实不科学,但是这不是我们的重点)。

具体的程序如下:

<?php
//利用PHP目录和文件函数遍历用户给出目录的所有的文件和文件夹,修改文件名称
function fRename($dirname){
 if(!is_dir($dirname)){
 echo "{$dirname}不是一个有效的目录!";
 exit();
 }
 $handle = opendir($dirname);
 while(($fn = readdir($handle))!==false){
 if($fn!='.'&&$fn!='..'){
  $curDir = $dirname.'/'.$fn;
  if(is_dir($curDir)){
  fRename($curDir);
  }
  else{
  $path = pathinfo($curDir);
  $newname = $path['dirname'].'/'.rand(0,100).'.'.$path['extension'];
  rename($curDir,$newname);
  echo $curDir.'---'.$newname."<br>";
  }
 }
 }
}
//给出一个目录名称调用函数
fRename('pl');
?>

程序分析:

第4行我们用is_dir函数来判断用户给出的目录是不是一个有效的目录名称;因为我们是学习所以写的简单一点如果你要放在服务器上供大家使用的话,你一定要谨慎的验证这个输入数据——例如,这个目录是否允许用户修改等等……

注意函数第9行的判断,必须用全等判断(PHP全等符号===三个等号,不全等!==一个叹号两个等号),否则如果有一个文件名称为0(零),会导致程序意外终止;

第12行,如果读取的文件是一个目录,就在此调用函数本身,实现函数的递归;

注意第16行pathinfo函数的用法,这个函数返回一个拥有三个元素的数组三个元素分别是:

Dirname路径的目录名称,basename路径包含的文件名称 和 extension文件的扩展名,具体这个函数的用法请参看手册相关部分。

在程序的17行中,使用了PHP的随机数函数rand,这是个基本的随机函数,其他随机函数请参看本站手册http://shouce.3water.com/php5/。

注意事项:一定要判断用PHP 的readdir函数读取的文件名称是不是”.”和”..”这很重要,为什么?你可以试试看呢!

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 #PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 #PHP
PHP 中使用ajax时一些常见错误总结整理
Feb 27 #PHP
PHP/HTML混写的四种方式总结
Feb 27 #PHP
老生常谈文本文件和二进制文件的区别
Feb 27 #PHP
php实现数据库的增删改查
Feb 26 #PHP
php查询及多条件查询
Feb 26 #PHP
You might like
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
python实现学生管理系统
2018/01/11 Python
python3安装speech语音模块的方法
2018/12/24 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
python mock测试的示例
2020/10/19 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
学雷锋标兵事迹材料
2014/08/18 职场文书
网络营销计划
2015/01/17 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
项目验收申请报告
2015/05/15 职场文书
工作年限证明范本
2015/06/15 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Nginx配置之禁止指定IP访问
2022/05/02 Servers