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 相关文章推荐
用户的详细注册和判断
Oct 09 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
PHP抽象类 介绍
Jun 13 PHP
Drupal7连接多个数据库及常见问题解决
Mar 02 PHP
浅谈php提交form表单
Jul 01 PHP
PHP的几个常用加密函数
Feb 03 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
js 动态选中下拉框
2009/11/26 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
DOM 高级编程
2015/05/06 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
js实现分页功能
2017/05/24 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
《赶海》教学反思
2014/04/20 职场文书
田径运动会通讯稿
2014/09/13 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
求职导师推荐信范文
2015/03/27 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书