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 表单数据的获取代码
Mar 10 PHP
PHP之数组学习
May 29 PHP
第六章 php目录与文件操作
Dec 30 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
PHP递归调用数组值并用其执行指定函数的方法
Apr 01 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
php用xpath解析html的代码实例讲解
Feb 14 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 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 PHP
消息持续发送的完整例子
2006/10/09 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
js 模拟气泡屏保效果代码
2010/07/10 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
学习python分支结构
2019/05/17 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
Python中logging日志库实例详解
2020/02/19 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
上班玩游戏检讨书
2014/02/07 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
项目总经理岗位职责
2014/02/14 职场文书
药剂专业求职信
2014/06/20 职场文书
银行竞聘报告范文
2014/11/06 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL