Files
php-doc-ru/reference/filesystem/functions/pathinfo.xml
2023-07-01 21:55:18 +03:00

259 lines
8.4 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: d0cc084a925f112c156d0dbac12718b2bd8d4889 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.pathinfo" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>pathinfo</refname>
<refpurpose>Возвращает информацию о пути к файлу</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>array</type><type>string</type></type><methodname>pathinfo</methodname>
<methodparam><type>string</type><parameter>path</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer><constant>PATHINFO_ALL</constant></initializer></methodparam>
</methodsynopsis>
<para>
<function>pathinfo</function> возвращает информацию о
<parameter>path</parameter> в виде ассоциативного массива или
строки, в зависимости от <parameter>flags</parameter>.
</para>
<note>
<para>
Подробнее о получении информации о текущем пути, можно почитать
в разделе <link linkend="language.variables.predefined">Предопределённые зарезервированные переменные</link>.
</para>
</note>
<note>
<para>
<function>pathinfo</function> оперирует входной строкой и не знает фактическую файловую систему
или компоненты пути, такие как "<literal>..</literal>".
</para>
</note>
<note>
<para>
Только в системах Windows символ <literal>\</literal> будет интерпретироваться
как разделитель каталогов. В других системах он будет
рассматриваться как любой другой символ.
</para>
</note>
<caution>
<para>
<function>pathinfo</function> учитывает настройки локали, поэтому
для корректной обработки пути с многобайтными символами должна
быть установлена соответствующая локаль с помощью функции
<function>setlocale</function>.
</para>
</caution>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>path</parameter></term>
<listitem>
<para>
Анализируемый путь.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
Если указан, то задаёт, какой из элементов пути будет возвращён:
<constant>PATHINFO_DIRNAME</constant>,
<constant>PATHINFO_BASENAME</constant>,
<constant>PATHINFO_EXTENSION</constant> и
<constant>PATHINFO_FILENAME</constant>.
</para>
<para>Если <parameter>flags</parameter> не указан, то возвращаются
все доступные элементы.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Если параметр <parameter>flags</parameter> не передан, то
возвращаемый ассоциативный массив (<type>array</type>)
будет содержать следующие элементы:
<literal>dirname</literal>, <literal>basename</literal>,
<literal>extension</literal> (если есть) и <literal>filename</literal>.
</para>
<note>
<para>
Если <parameter>path</parameter> содержит больше одного расширения, то
<constant>PATHINFO_EXTENSION</constant> возвращает только последний и
<constant>PATHINFO_FILENAME</constant> удаляет только последнее расширение.
(смотрите пример ниже).
</para>
</note>
<note>
<para>
Если <parameter>path</parameter> не содержит расширения, то не будет
возвращён элемент <literal>extension</literal> (смотрите ниже второй пример).
</para>
</note>
<note>
<para>
Если <literal>basename</literal> параметра <parameter>path</parameter>
начинается с точки, то все последующие символы интерпретируются
как расширение файла (<literal>extension</literal>) и имя файла
<literal>filename</literal> будет пустым (смотрите третий пример).
</para>
</note>
<para>
Если указан параметр <parameter>flags</parameter>, будет возвращена
строка (<type>string</type>), содержащая указанный элемент.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <function>pathinfo</function></title>
<programlisting role="php">
<![CDATA[
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
/www/htdocs/inc
lib.inc.php
php
lib.inc
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример с <function>pathinfo</function>, показывающий разницу между null
и отсутствием расширения</title>
<programlisting role="php">
<![CDATA[
<?php
$path_parts = pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);
$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
string(0) ""
Notice: Undefined index: extension in test.php on line 6
NULL
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример <function>pathinfo</function> для файла, начинающегося с точки</title>
<programlisting role="php">
<![CDATA[
<?php
print_r(pathinfo('/some/path/.test'));
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Array
(
[dirname] => /some/path
[basename] => .test
[extension] => test
[filename] =>
)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример использования <function>pathinfo</function> с разыменованием массива</title>
<para>
Параметр <parameter>flags</parameter> не является битовой маской.
Может быть предоставлено только одно значение.
Чтобы выбрать только ограниченный набор разобранных значений,
используйте деструктуризацию массива следующим образом:
</para>
<programlisting role="php">
<![CDATA[
<?php
['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');
var_dump($basename, $dirname);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
string(11) "lib.inc.php"
string(15) "/www/htdocs/inc"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>dirname</function></member>
<member><function>basename</function></member>
<member><function>parse_url</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
-->