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初学者头疼问题总结
Jul 08 PHP
PHP 引用文件技巧
Mar 02 PHP
学习php笔记 字符串处理
Oct 19 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
php图片添加文字水印实现代码
Mar 15 PHP
项目中应用Redis+Php的场景
May 22 PHP
PHP调用接口API封装的例子
Oct 11 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
Aug 24 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
正则表达式语法
2006/10/09 Javascript
第十四节--命名空间
2006/11/16 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
js实现中文实时时钟
2020/01/15 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
Python中动态创建类实例的方法
2017/03/24 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python内置模块turtle绘图详解
2017/12/09 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
python安装sklearn模块的方法详解
2020/11/28 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
职工小家建设活动方案
2014/08/25 职场文书
七一讲话心得体会
2014/09/05 职场文书
功夫熊猫观后感
2015/06/10 职场文书
新学期开学标语2015
2015/07/16 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书