2014-09-05
有时候需要递归创建目录函数,这时需要使用dirname()函数(取得路径中的目录部分)和mkdir()函数(创建目录)。
先普及一下语法:
(PHP 4, PHP 5)
dirname ― 返回路径中的目录部分
$path
)给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
path
一个路径。
在 Windows 中,斜线(/)和反斜线(/)都可以用作目录分隔符。在其它环境下是斜线(/)。
返回 path 的父目录。 如果在 path
中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把 path
中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。
版本 | 说明 |
---|---|
5.0.0 | dirname() 的操作从 PHP 5.0.0 版开始是二进制安全的。 |
4.0.3 | 在这个版本中,dirname() 被修正为 POSIX 兼容。 |
Example #1 dirname() 例子
echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or / on Windows)
echo "3) " . dirname("."); // 3) .
?>
Note:
dirname() operates naively on the input string, and is not aware of the actual filesystem, or path components such as "..".
Note:
dirname() is locale aware, so for it to see the correct directory name with multibyte character paths, the matching locale must be set using the setlocale() function.
Note:
Since PHP 4.3.0, you will often get a slash or a dot back from dirname() in situations where the older functionality would have given you the empty string.
检查下面发生变化的例子:
// PHP 4.3.0 以前
dirname('c:/'); // 返回 '.'
// PHP 4.3.0 以后
dirname('c:/x'); // 返回 'c:'
dirname('c:/Temp/x'); // 返回 'c:/Temp'
dirname('/x'); // 返回 '/' (or '/' on Windows)
?>
(PHP 4, PHP 5)
mkdir ― 新建目录
$pathname
[, int $mode
= 0777 [, bool $recursive
= false [, resource$context
]]] )尝试新建一个由 pathname 指定的目录。
pathname
目录的路径。
mode
默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。
Note:
mode
在 Windows 下被忽略。
注意也许想用八进制数指定模式,也就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask()来改变。
recursive
Allows the creation of nested directories specified in the pathname
.
context
Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
版本 | 说明 |
---|---|
5.0.0 | 添加 recursive 参数。 |
5.0.0 | mkdir() 也可用于某些 URL 封装协议。参见支持的协议和封装协议 的列表看看 mkdir() 支持哪些 URL 封装协议。 |
4.2.0 |
mode 成为可选项。 |
Example #1 mkdir() 例子
mkdir("/path/to/my/dir", 0700);
?>
Example #2 通过 recursive
参数使用 mkdir()
// Desired folder structure
$structure = './depth1/depth2/depth3/';
// To create the nested structure, the $recursive parameter
// to mkdir() must be specified.
if (!mkdir($structure, 0, true)) {
die('Failed to create folders...');
}
// ...
?>
Note: 当启用 安全模式时, PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID(所有者)。
递归创建目录函数:
/** * Create the directory recursively. * @param $path The directory to create, such as, /a/b/c/d/e/ * @param $mode The mode of the directory to create, such as, 0755, 0777. */ function RecursiveMkdir($path,$mode) { if (!file_exists($path)) { // The file is not exist. RecursiveMkdir(dirname($path), $mode); // Call itself. if(mkdir($path, $mode)) { // Call mkdir() to create the last directory, and the result is true. return true; } else { // Call mkdir() to create the last directory, and the result is false. return false; } } else { // The file is already exist. return true; } }
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
2014-09-05
PHP中的(++i)前缀自增 和 (i++)后缀自增
2014-09-05
php递归返回值的问题
2014-09-05
常用dos命令及语法
2014-09-27
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php 做权限管理
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
nginx,php日志分割
2014-09-05
解决ThinkPHP在Nginx下无法使用pathin方式的问题
2014-09-05
c语言新手入门代码
2022-03-22
哔哩哔哩空匣人型官方版下载v1.0.0 安卓版
其它手游 1.81G
下载星耀对决变态版下载v1.1.0.25457 安卓版
其它手游 719.7M
下载朕的江山日服下载v2.11.95 安卓版
策略塔防 456.4M
下载拔剑称王腾讯版下载v2.25.6 安卓版
角色扮演 392.4M
下载心在萌在九游版下载v2.0 安卓最新版
角色扮演 126.6M
下载放置江湖当乐版下载v2.6.0.1 安卓版
角色扮演 476.3M
下载微信游戏幻灵修仙传下载v17.0 安卓版
其它手游 53.5M
下载神将三国快手版本下载v3.9.23 安卓版
角色扮演 227.4M
下载劲舞团猜歌版手游下载v1.0 安卓版
下载
九游万剑至尊手游下载v50.3.0 安卓版
下载
大周列国志单机版下载v1.1 安卓版
下载
大秦帝国之帝国烽烟小米版下载v6.6.2 安卓版
下载
极品芝麻官三星版本下载v3.7 安卓版
下载
家园卫士红包版下载v19.5 安卓版
下载
我是大英雄手游下载v3.1.0.00090002 安卓版
下载
萌龙大乱斗腾讯版下载v6.0.1 安卓版
下载