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 相关文章推荐
php5 mysql分页实例代码
Apr 10 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
php URL验证正则表达式
Jul 19 PHP
基于Zend的Config机制的应用分析
May 02 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
Yii2数据库操作常用方法小结
May 04 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
浅谈PHP array_search 和 in_array 函数效率问题
Oct 15 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
PHP发送短信代码分享
2015/08/11 PHP
PHP面向对象详解(三)
2015/12/07 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
详解vue 组件
2020/06/11 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
python如何建立全零数组
2020/07/19 Python
python字典key不能是可以是啥类型
2020/08/04 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
造型师求职自荐信
2013/09/27 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
土地租赁协议书
2015/01/29 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript