Files
php-doc-ru/reference/filesystem/functions/dirname.xml
Sergey Panteleev daef8df962 Обнуление тега Reviewed (#364)
[skip-lint]
[skip-spellcheck]
2021-11-16 13:03:53 +03:00

192 lines
6.5 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 67ca0d930c95a85ea49aff456409409f6ae06c1b Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.dirname">
<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>
Возвращает путь к родительской директории. Если в параметре
<parameter>path</parameter> не содержится слешей, будет возвращена
точка ('<literal>.</literal>'), обозначающая текущую директорию.
В другом случае будет возвращён <parameter>path</parameter>
без последнего компонента <literal>/component</literal>.
</para>
<caution>
<para>
Будьте осторожны при использовании этой функции в цикле,
который может достичь каталога верхнего уровня, так как это может привести к бесконечному циклу.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
dirname('.'); // Вернёт '.'.
dirname('/'); // Вернёт `\` в Windows и '/' в *nix системах.
dirname('\\'); // Вернёт `\` в Windows и '.' в *nix системах.
dirname('C:\\'); // Вернёт 'C:\' в Windows и '.' в *nix системах.
?>
]]>
</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
/ (или \ в 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
-->