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实现mysql数据库备份类
Mar 20 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
php中几种常见安全设置详解
Apr 06 PHP
php实现rc4加密算法代码
Apr 25 PHP
php cc攻击代码与防范方法
Oct 18 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
php无限遍历目录示例
Feb 21 PHP
ucenter通信原理分析
Jan 09 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php微信支付之公众号支付功能
May 30 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
PHP用户指南-cookies部分
2006/10/09 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
初识laravel5
2015/03/02 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
Move.js入门
2017/02/08 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
python的id()函数解密过程
2012/12/25 Python
Python实现批量修改文件名实例
2015/07/08 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
Python实现播放和录制声音的功能
2020/08/12 Python
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
便利店促销方案
2014/02/20 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
代办社保委托书范文
2014/10/06 职场文书
2016年春节慰问信息
2015/03/25 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers