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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
php5数字型字符串加解密代码
Apr 24 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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
PHPExcel笔记, mpdf导出
2016/05/03 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
django中的ajax组件教程详解
2018/10/18 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
python enumerate函数的使用方法总结
2017/11/15 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
销售自我评价
2013/10/22 职场文书
大学生就业自我鉴定
2013/10/26 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
单位绩效考核方案
2014/05/11 职场文书
体育专业自荐书
2014/05/29 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
2022年四月新番
2022/03/15 日漫