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版(1)
Oct 09 PHP
PHP中的正规表达式(二)
Oct 09 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 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中上传大体积文件时需要的设置
2006/10/09 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php多进程应用场景实例详解
2019/07/22 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
python实现的简单猜数字游戏
2015/04/04 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
python利用platform模块获取系统信息
2020/10/09 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
工程地质勘察专业大学生求职信
2013/10/13 职场文书
2014年转正工作总结
2014/11/08 职场文书
2014年教研室工作总结
2014/12/06 职场文书
停电调休通知
2015/04/16 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript