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 相关文章推荐
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php高级编程-函数-郑阿奇
Jul 04 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP中预定义的6种接口介绍
May 12 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP实现留言板功能的详细代码
Mar 25 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
PHP获取文件相对路径的方法
2015/02/26 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
JavaScript触发器详解
2007/03/10 Javascript
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
js实现小时钟效果
2020/03/25 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
跟老齐学Python之做一个小游戏
2014/09/28 Python
Python中类型检查的详细介绍
2017/02/13 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
python实现图片转字符画的完整代码
2021/02/21 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
师范应届毕业生自荐信
2013/11/18 职场文书
公务员保密承诺书
2014/03/27 职场文书
给校长的建议书300字
2014/05/16 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
国际会计专业求职信
2014/08/04 职场文书
高三复习计划
2015/01/19 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
如何利用python实现Simhash算法
2022/06/28 Python