Files
php-doc-ru/reference/filesystem/functions/fnmatch.xml

253 lines
9.9 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: 39a98b1f1776afd4c41f79ce528309c95f62b10a Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.fnmatch" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>fnmatch</refname>
<refpurpose>Проверяет совпадение имени файла с шаблоном</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>fnmatch</methodname>
<methodparam><type>string</type><parameter>pattern</parameter></methodparam>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<para>
Функция <function>fnmatch</function> проверяет, совпадает ли название файла
или строка <parameter>filename</parameter> с шаблоном <parameter>pattern</parameter>,
который состоит из подстановочных знаков командной оболочки.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>pattern</parameter></term>
<listitem>
<para>
Шаблон <parameter>pattern</parameter>, с которым нужно сопоставить. Часто аргумент
<parameter>pattern</parameter> будет содержать
подстановочные знаки вроде <literal>«?»</literal> и <literal>«*»</literal>.
<table>
<title>
Подстановочные знаки параметра <parameter>pattern</parameter>
</title>
<tgroup cols="2">
<thead>
<row>
<entry>Подстановочный знак</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<literal>?</literal>
</entry>
<entry>
Вопросительный знак будет соответствовать любому отдельному символу.
Например, шаблон <literal>«file?.txt»</literal> будет соответствовать названиям
файлов <literal>«file1.txt»</literal> и <literal>«fileA.txt»</literal>,
но не будет соответствовать названию файла <literal>«file10.txt»</literal>.
</entry>
</row>
<row>
<entry>
<literal>*</literal>
</entry>
<entry>
Звёздочка будет соответствовать нулю или нескольким символам.
Например, шаблон <literal>«foo*.xml»</literal> будет соответствовать названиям файлов
<literal>«foo.xml»</literal> или <literal>«foobar.xml»</literal>.
</entry>
</row>
<row>
<entry>
<literal>[ ]</literal>
</entry>
<entry>
Квадратные скобки создают диапазон кодовых точек кодировки ASCII или набор символов.
Например, шаблон <literal>«index.php[45]»</literal> будет соответствовать названиям файлов
<literal>«index.php4»</literal> и <literal>«index.php5»</literal>, но не будет
соответствовать названию файла <literal>«index.phpt»</literal>.
Диапазоны, которыми часто пользуются, — <literal>[0-9]</literal>, <literal>[a-z]</literal>
и <literal>[A-Z]</literal>. Разрешено указывать больше одного набора или диапазона одновременно,
например <literal>[0-9a-zABC]</literal>.
</entry>
</row>
<row>
<entry>
<literal>!</literal>
</entry>
<entry>
Восклицательный знак указывают для совпадения с символами,
которых нет в квадратных скобках. Например, шаблон <literal>«[!A-Z]*.html»</literal>
будет соответствовать названию файла <literal>«demo.html»</literal>,
но не будет соответствовать названию <literal>«Demo.html»</literal>.
</entry>
</row>
<row>
<entry>
<literal>\</literal>
</entry>
<entry>
Обратный слеш экранирует специальные символы.
Например, шаблон <literal>«Name\?»</literal> будет соответствовать строке
<literal>«Name?»</literal>, не будет соответствовать строке <literal>«Names»</literal>.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>filename</parameter></term>
<listitem>
<para>
Проверяемая строка. Функцией часто проверяют имена файлов,
но также проверяют строки.
</para>
<para>
Среднеподготовленные посетители сайтов пользуются шаблонами
командной оболочки или хотя бы несложными формами
подстановок вроде <literal>«?»</literal> и <literal>«*»</literal>.
Поэтому для сопоставления поискового выражения, которое
в пользовательской части сайта вводят незнакомые с программированием
пользователи, вместо функции <function>preg_match</function> лучше пользоваться
функцией <function>fnmatch</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
Параметр <parameter>flags</parameter> принимает
комбинации следующих флагов, которые объединяют
<link linkend="language.operators.bitwise">двоичным оператором
ИЛИ (|)</link>.
<table>
<title>
Список возможных флагов для функции <function>fnmatch</function>
</title>
<tgroup cols="2">
<thead>
<row>
<entry><parameter>Флаг</parameter></entry>
<entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>FNM_NOESCAPE</constant></entry>
<entry>
Отключить экранирование обратным слешем.
</entry>
</row>
<row>
<entry><constant>FNM_PATHNAME</constant></entry>
<entry>
Слеш в строке совпадает только со слешем в шаблоне.
</entry>
</row>
<row>
<entry><constant>FNM_PERIOD</constant></entry>
<entry>
Ведущая точка в строке должна точно совпадать с точкой в шаблоне.
</entry>
</row>
<row>
<entry><constant>FNM_CASEFOLD</constant></entry>
<entry>
Совпадение без учёта регистра. Часть расширения GNU.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает &true; при совпадении, иначе &false;.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Проверка соответствия названия цвета шаблону подстановки командной оболочки</title>
<programlisting role="php">
<![CDATA[
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "Какая-то форма серого цвета...";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
Функция пока недоступна на POSIX-несовместимых системах,
кроме Windows.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>glob</function></member>
<member><function>preg_match</function></member>
<member><function>sscanf</function></member>
<member><function>printf</function></member>
<member><function>sprintf</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
-->