php如何批量修改文件权限、文件后缀、文件名? …
2019-04-28 08:25:09来源:华彩软件站 阅读 ()
php文件一多,肯定就要用到批量修改,在工作中如果碰到需要php批量修改文件权限、文件后缀、文件名,您会怎么弄呢!是不是感觉很多都还不会啊,没关系的,今天小编给大家代码这三种的修改方式噢,您一看就会明白的啦!
(1)php遍历目录并批量修改文件权限
做程序的开发,不得不遇到的就是文件权限的问题,很多时候我们程序出现的各种各样的问题也是因为文件权限的原因,尤其是在linux系统下更是如此,合理正确的分配文件的权限可以让程序更加的有效和安全,这里举个例子将一个目录遍历,并将其下所有文件权限改为777,对于文件的权限如何划分,大家可以google一下。先看代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
//$dir ->目录 $chmod->权限 如:0777
function recurDir($dir,$chmod='') {
if(is_dir($dir)) {
if($handle = opendir($dir)) {
while(false !== ($file = readdir($handle))) {
if(is_dir($dir.'/'.$file)) {
if($file != '.' && $file != '..') {
$path = $dir.'/'.$file;
$chmod ? chmod($path,$chmod) : FALSE;
echo $path.'<p>';
recurDir($path);
}
}else{
$path = $dir.'/'.$file;
$chmod ? chmod($path,$chmod) : FALSE;
echo $path.'<p>';
}
}
}
closedir($handle);
}
}
recurDir('ask',0777);
如上面代码,即是将本文件同级下的ask目录下的所有文件的权限改为777,但是并不包含ask这个目录,我们应该要来了解一下文件权限操作的常识,一个文件只能是改变其下级,或者同级的下级目录或文件的权限,而起同级的目录或文件,或者上级的目录或文件,其是不能改变的。原因是什么,就是出于安全的考虑,试想一下,如果下级可以改上级,那么我们岂不是可以控制整个电脑了,这样当然不安全。
(2)php批量修改文件后缀
代码如下:
<?php
function foreachDir($path){
$handle=opendir($path);
if($handle){
while (false !== ($file = readdir($handle))) {
if($file!="." && $file!='..'){
if(is_dir($path.$file)){
echo $path.$file."<br/>";
foreachDir($path.$file);
}else{
echo "--".$path."/".$file."<br/>";
$ext = strripos($file,'.');
$aaa = substr($file,0,$ext);
rename($path.'/'.$file,$path.'/'.$aaa.'.JPG');
// die();
}
}
}
return false;
}
}
foreachDir('D:xampphtdocsTNF2');
(3)利用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,这是个基本的随机函数,其他随机函数请参看手册。
注意事项:一定要判断用PHP 的readdir函数读取的文件名称是不是”.”和”..”这个是很重要的,如果您是PHP新手一定要注意一下噢!
好了,三种批量修改的都介绍完了,如果您还不懂,请收藏我们的页面并咨询我们更多的PHP知识噢!
原文链接:http://www.huacolor.com/article/38187.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:如何共享C盘?安装双系统
- IOS 12.1.3正式版如何降级 ios12.1.3正式版降级方法步骤 2019-08-19
- Win10如何判断系统是纯净安装或在线升级实用技巧 2019-05-04
- IE6.0如何清除浏览器的缓存 2019-05-04
- Win10如何判断系统是纯净安装或在线升级实用技巧 2019-05-04
- IE6.0如何设置代理IP上网 2019-05-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash