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中使用Oracle数据库(6)
Oct 09 PHP
PHP中一个控制字符串输出的函数
Oct 09 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php实现读取内存顺序号
Mar 29 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
php+websocket 实现的聊天室功能详解
May 27 PHP
实例讲解PHP表单
Jun 10 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
php auth_http类库进行身份效验
2009/03/19 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
分享PHP守护进程类
2015/12/30 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
百度留言本js 大家可以参考下
2009/10/13 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
python将回车作为输入内容的实例
2018/06/23 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
医院辞职信范文
2014/01/17 职场文书
会计专业自我鉴定
2014/02/10 职场文书
董事长秘书工作职责
2014/06/10 职场文书
商业门面租房协议书
2014/11/25 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书