日期:2011-06-26  浏览次数:20491 次

有时候需要递归创建目录函数,这时需要使用dirname()函数(取得路径中的目录部分)和mkdir()函数(创建目录)。

先普及一下语法:

dirname

(PHP 4, PHP 5)

dirname — 返回路径中的目录部分

说明 ?

string dirname ( string $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)

?>

参见 ?

  • basename() - 返回路径中的文件名部分
  • pathinfo() - 返回文件路径的信息
  • realpath() - 返回规范化的绝对路径名

    mkdir

    (PHP 4, PHP 5)

    mkdir — 新建目录

    说明 ?

    bool mkdir ( string $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。

    返回值 ?