加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP mkdir建设文件夹实现要领理会

发布时间:2020-11-23 19:20:06 所属栏目:编程 来源:网络整理
导读:这篇文章首要先容了PHP mkdir建设文件夹实现要领理会,文中通过示例代码先容的很是具体,对各人的进修可能事变具有必然的参考进修代价,必要的伴侣可以参考下

在开始之前,我先声名一下,也许很多伴侣与我一样以为只要给一个路径,mkdir就可以建设文件夹,其余不是那样,单个的MKDIR只能建设一级目次,对付多级的就不可了,那怎样用mkdir来建设呢?先我抄一段手册上的有关mkdir的描写,如下:

声名

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

实行新建一个由 pathname 指定的目次。

留意大概想用八进制数指定模式,也就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask() 来改变。

留意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成为可选项。

默认的 mode 是 0777,意味着最大也许的会见权。有关 mode 的更多信息请阅读 chmod() 页面。

例 1. mkdir() 例子

<?php
mkdir("/path/to/my/dir", 0700);
?>

假如乐成则返回 TRUE,失败则返回 FALSE。

例 2. mkdir() 例子

$dir = iconv("UTF-8", "GBK", "public/log"); if (!file_exists($dir)){ mkdir ($dir,0777,true); echo '建设文件夹log乐成'; } else { echo '需建设的文件夹log已经存在'; }

iconv要领是为了防备中文乱码,担保可以建设辨认中文目次,不消iconv要领名目标话,将无法建设中文目次

mkdir要领的第一个参数是要建设的目次路径,第二个参数是指建设目次的权限,在windows体系下该参数会被忽略,第三个参数是指是否建设多级目次,默以为false
参考链接:https://www.cnblogs.com/modou/p/5991365.html

留意: 自 PHP 5.0.0 rmdir() 也可用于某些 URL 封装协议。拜见附录 N 的列表看看 rmdir() 支持哪些 URL 封装协议。

留意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的声名见参考 CLX, Stream Functions。

留意: recursive 参数是 PHP 5.0.0 添加的。

留意: 当安详模式被激活时,PHP 将搜查被操纵的目次是否和正在执行的剧本有沟通的 UID(全部者)。

以上是PHP5手册上的描写信息,即你可以这样:mkdir('./test',0777)就能建设一个文件夹了。可是怎样递归建设多级目次呢?
其方法有:

1 PHP5 下建设目次函数 mkdir 增进了一个新的参数 recursive ,通过配置 recursive 为 true 可以实现递归建设目次的目标,可是对PHP4就不可了。

2 本身写一个递归建设多级目次。

这里,我对第二种方法作一点声名,也有两种方法,如下:

第一种(用mkdirs来发生多级父级)

function mkdirs($dir, $mode = 0777)
{
if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
if (!mkdirs(dirname($dir), $mode)) return FALSE;
return @mkdir($dir, $mode);
}

声名:

1 起首 简朴说一下mkdir()与mkdirs()的区别,以及,is_dir和dirname():

mkdir() 只能在已经存在的目次中建设建设文件夹(即父级必需有才行)。

mkdirs() 可以在不存在的目次中建设文件夹。诸如:a//b,既可以建设多级目次。

dirname() 是返回路径中的目次部门。

is_dir() 用于判定给出的文件名是否是一个有用的目次

2 大抵流程为:

(1) 先用is_dir判定是否已是一个文件夹,假如是则返回TRUE。如没有(可能不是文件夹),则试着建设它,虽然有可以父级不存在,那mkdir直接就创不乐成,但也为不报错,以是就用@来抑止报非致命错误。

(2)假如传参数都不满意前提,那么就进入第二个if语句,先是取得路径中的目次部门,虽然有也许是不存在的多级父级,以是用了mkdirs()来先建设父级,假如乐成(不乐成返回FALSE),那么再用mkdir来建设最终的目次了。
好了,以上就是第一种方案。

第二种(声名:此方案是相等的精简,那是相等的不错的方案,保举行使它)

function create_folders($dir){
return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
}

声名: 1 大抵流程: 获得路径后,先判定是否已是一个有用的文件目次,如是则返回,竣事措施。假如不是,(因为这里用了OR作先择性的前提,即只要满意个中一个前提就行),则递归再挪用自身,而且传入的路径中,少一级目次。这样来先回到上级有的父级目次中,再用mkdir来建设下一级的。

好了,以上就是用PHP来建设文件夹(以及多级文件夹)的要领。_

总结:

1 用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过配置 recursive 为 true 可以实现递归建设目次的目标,可是对PHP4就不可了。

2 本身写的要领中,用mkdirs来建设多级父级目次方法

3 如故用mkdir很奇妙的来建设

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读