-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathdirname.xml
executable file
·185 lines (176 loc) · 5.02 KB
/
dirname.xml
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 130701dd4e64351d38da565ab3043a8f795698f8 Maintainer: dallas Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<refentry xml:id="function.dirname" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>dirname</refname>
<refpurpose>返回路径中的目录部分</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>dirname</methodname>
<methodparam><type>string</type><parameter>path</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>levels</parameter><initializer>1</initializer></methodparam>
</methodsynopsis>
<para>
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名,且目录深度为 <parameter>levels</parameter> 级。
</para>
<note>
<para>
<function>dirname</function> 纯粹基于输入字符串操作,
它不会受实际文件系统和类似 "<literal>..</literal>" 的路径格式影响。
</para>
</note>
<caution>
<para>
在 Windows 上,<function>dirname</function>
假设当前设置的代码页,因此要查看具有多字节字符路径的正确目录名称,必须设置匹配的代码页。如果
<parameter>path</parameter> 包含当前代码页无效的字符,则 <function>dirname</function>
的行为是未定义的。
</para>
<para>
在其它系统上,<function>dirname</function> 假设 <parameter>path</parameter>
是以 ASCII 兼容编码进行编码的。否则函数的行为是未定义的。
</para>
</caution>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>path</parameter></term>
<listitem>
<para>
一个路径。
</para>
<para>
在 Windows 中,斜线(<literal>/</literal>)和反斜线(<literal>\</literal>)都可以用作目录分隔符。在其它环境下是斜线(<literal>/</literal>)。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>levels</parameter></term>
<listitem>
<para>
要向上的父目录数量。
</para>
<para>
整型,必须大于 0。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
返回 path 的父目录。如果在 <parameter>path</parameter>
中没有斜线,则返回一个点('<literal>.</literal>'),表示当前目录。否则返回的是把
<parameter>path</parameter> 中结尾的
<literal>/component</literal>(最后一个斜线以及后面部分)去掉之后的字符串。
</para>
<caution>
<para>
Be careful when using this function in a loop that can reach the
top-level directory as this can result in an infinite loop.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
dirname('.'); // Will return '.'.
dirname('/'); // Will return `\` on Windows and '/' on *nix systems.
dirname('\\'); // Will return `\` on Windows and '.' on *nix systems.
dirname('C:\\'); // Will return 'C:\' on Windows and '.' on *nix systems.
?>
]]>
</programlisting>
</informalexample>
</para>
</caution>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.0</entry>
<entry>
添加可选的 <parameter>levels</parameter> 参数。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>dirname</function> 例子</title>
<programlisting role="php">
<![CDATA[
<?php
echo dirname("/etc/passwd") . PHP_EOL;
echo dirname("/etc/") . PHP_EOL;
echo dirname(".") . PHP_EOL;
echo dirname("C:\\") . PHP_EOL;
echo dirname("/usr/local/lib", 2);
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
/etc
/ (or \ on Windows)
.
C:\
/usr
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>basename</function></member>
<member><function>pathinfo</function></member>
<member><function>realpath</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->