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+Html+缓存
Dec 20 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
初识laravel5
Mar 02 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
PHP递归的三种常用方式
Feb 28 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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
php addslashes 函数详细分析说明
2009/06/23 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
深入解析php中的foreach函数
2013/08/31 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
PHP实现的json类实例
2015/07/28 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
js文字横向滚动特效
2015/11/11 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
详解Python当中的字符串和编码
2015/04/25 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
护士节策划方案
2014/05/19 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
第一书记观后感
2015/06/08 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
Python如何加载模型并查看网络
2022/07/15 Python