在
PHP 4.0.3 中,dirname() 被修正为 POSIX 兼容。本质上就意味着如果在 path 中没有斜线,则返回一个点('.'),表示
当前目录。否则返回的是把 path 中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。注意这意味着在老的函数返回一个
空字符串的情形下通常从 dirname() 得到的是
斜线或者一个点。
在 Windows 中,斜线(/)和反斜线(\uff09都可以用作目录
分隔符。在其它环境下是斜线(/)。
例子 1. dirname() 例子
dirname 命令读取指定路径名删除最后一个“/”(
斜杠)及其后面的字符,保留其他部分,并写结果到标准输出。如果最后一个“/”后无
字符,dirname 命令使用倒数第二个“/”,并忽略其后的所有字符。dirname 命令在创建路径名的时候遵从以下规则:
如果 Path 参数为“//”(双
斜杠),或者参数 Path 全部由
斜杠组成,将其转换为单斜杠“/”。跳过步骤 2 到 7。 从指定路径删除尾部的“/”
字符。 如果参数 Path 中没有剩下的“/”,则将路径转换成 . (点)。跳过步骤 4 到 7。 从
路径中删除尾部的所有非斜杠字符。 如果剩下的路径为“//”(双
斜杠),跳到步骤 6。 删除路径尾部的斜杠
字符。 如果剩下的路径为空,则转换成单斜杠“/”。例如,输入:
dirname a 结果为 . (点)。输入:
命令 dirname 和
basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。
AOUTFILE=`dirname `/a.out这将设置 shell
变量 AOUTFILE 作为文件 a.out 的名称,它与 TEXTFILE 位于同一目录。如果 TEXTFILE 是 /home/fran/prog.c,则 dirname 的值成了 /home/fran,且 AOUTFILE 变成了 /home/fran/a.out。