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编写PDF文档生成器
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
简单的php中文转拼音的实现代码
Feb 11 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
yii分页组件用法实例分析
Dec 28 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
总结对比php中的多种序列化
Aug 28 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
PHP学习记录之数组函数
Jun 01 PHP
PHP PDOStatement::nextRowset讲解
Feb 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
咖啡常见的种类
2021/03/03 新手入门
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
先进集体事迹材料范文
2014/12/25 职场文书
会计简历自我评价
2015/03/10 职场文书
辩护词格式
2015/05/22 职场文书
电影圆明园观后感
2015/06/03 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书