1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
2025-10-18 00:00:42 +03:00

291 lines
11 KiB
XML
Raw Permalink 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: 71166b721ba6bb7dd3110da86efa3b723e1f7651 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.substr" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>substr</refname>
<refpurpose>Возвращает подстроку</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>substr</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
<methodparam><type>int</type><parameter>offset</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>length</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Функция возвращает часть строки <parameter>string</parameter>.
Начало подстроки указывают в параметре <parameter>offset</parameter>, а длину — в параметре <parameter>length</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
Входная строка.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
При нулевом или положительном значении смещения <parameter>offset</parameter>
функция возвращает правую часть строки <parameter>string</parameter>,
которая начинается с позиции смещения <parameter>offset</parameter>. Отсчёт позиций начинается с нуля.
В строке "<literal>abcdef</literal>", например, на позиции <literal>0</literal> стоит символ "<literal>a</literal>",
на позиции <literal>2</literal> — символ "<literal>c</literal>" и т. д.
</para>
<para>
Отрицательные смещения <parameter>offset</parameter> отсчитываются с конца строки
и функция также возвращает подстроку, которая начинается с позиции
смещения <parameter>offset</parameter> и идёт до конца строки
<parameter>string</parameter>.
</para>
<para>
Функция вернёт пустую строку, если длина строки <parameter>string</parameter>
меньше значения смещения <parameter>offset</parameter>.
</para>
<para>
<example>
<title>Пример установки для параметра <parameter>offset</parameter> отрицательного смещения</title>
<programlisting role="php">
<![CDATA[
<?php
echo substr("abcdef", -1), PHP_EOL; // Функция возвращает значение "f"
echo substr("abcdef", -2), PHP_EOL; // Функция возвращает значение "ef"
echo substr("abcdef", -3, 1), PHP_EOL; // Функция возвращает значение "d"
?>
]]>
</programlisting>
</example>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>length</parameter></term>
<listitem>
<para>
Параметр <parameter>length</parameter> ограничивает количество символов, которое возвращает функция.
При установке для параметра <parameter>length</parameter> положительного значения
возвращается правая часть строки <parameter>string</parameter>,
начиная с позиции смещения <parameter>offset</parameter>.
Функция вернёт меньше символов, если часть строки с позиции смещения меньше заданной длины.
</para>
<para>
При установке для параметра <parameter>length</parameter> отрицательного значения
такое же количество символов отбрасывается из конца строки <parameter>string</parameter>
или из конца подстроки, которая осталась после вычисления стартовой позиции при отрицательном смещении <parameter>offset</parameter>.
Функция вернёт пустую строку, если позиции смещения <parameter>offset</parameter> и усечения совпадают или пересекаются.
</para>
<para>
При установке для параметра <parameter>length</parameter> значения <literal>0</literal>
функция вернёт пустую строку.
</para>
<para>
При пропуске параметра <parameter>length</parameter> или установке значения &null;
функция вернёт подстроку с позиции смещения <parameter>offset</parameter>
до конца строки.
</para>
<example>
<title>Пример с отрицательным значением параметра <parameter>length</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
echo substr("abcdef", 0, -1), PHP_EOL; // Функция возвращает значение "abcde"
echo substr("abcdef", 2, -1), PHP_EOL; // Функция возвращает значение "cde"
echo substr("abcdef", 4, -4), PHP_EOL; // Функция возвращает значение ""; до PHP 8.0.0 возвращалось значение false
echo substr("abcdef", -3, -1), PHP_EOL; // Функция возвращает значение "de"
?>
]]>
</programlisting>
</example>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает извлечённую часть строки <parameter>string</parameter>
или пустую строку.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Параметр <parameter>length</parameter> теперь принимает значение null.
При явной установке для параметра <parameter>length</parameter> значения &null;
функция возвращает подстроку, которая заканчивается в конце строки;
раньше возвращалась пустая строка.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
Функция возвращает пустую строку там, где раньше возвращала &false;.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Стандартный пример поиска подстроки функцией <function>substr</function></title>
<programlisting role="php">
<![CDATA[
<?php
echo substr('abcdef', 1), PHP_EOL; // bcdef
echo substr("abcdef", 1, null), PHP_EOL; // bcdef; до PHP 8.0.0 возвращалась пустая строка
echo substr('abcdef', 1, 3), PHP_EOL; // bcd
echo substr('abcdef', 0, 4), PHP_EOL; // abcd
echo substr('abcdef', 0, 8), PHP_EOL; // abcdef
echo substr('abcdef', -1, 1), PHP_EOL; // f
// Доступ к отдельному символу в строке получают
// также через квадратные скобки
$string = 'abcdef';
echo $string[0], PHP_EOL; // a
echo $string[3], PHP_EOL; // d
echo $string[strlen($string)-1], PHP_EOL; // f
?>
]]>
</programlisting>
</example>
<example>
<title>Функция <function>substr</function> и приведение типов</title>
<programlisting role="php">
<![CDATA[
<?php
class apple
{
public function __toString()
{
return "green";
}
}
echo "1) ", var_export(substr("pear", 0, 2), true), PHP_EOL;
echo "2) ", var_export(substr(54321, 0, 2), true), PHP_EOL;
echo "3) ", var_export(substr(new apple(), 0, 2), true), PHP_EOL;
echo "4) ", var_export(substr(true, 0, 1), true), PHP_EOL;
echo "5) ", var_export(substr(false, 0, 1), true), PHP_EOL;
echo "6) ", var_export(substr("", 0, 1), true), PHP_EOL;
echo "7) ", var_export(substr(1.2e3, 0, 4), true), PHP_EOL;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) ''
6) ''
7) '1200'
]]>
</screen>
</example>
<example>
<title>Недопустимый диапазон символов</title>
<para>
При запросе недопустимого диапазона символов функция <function>substr</function>
начиная с PHP 8.0.0 возвращает пустую строку; раньше возвращалось значение &false;.
</para>
<programlisting role="php">
<![CDATA[
<?php
var_dump(substr('a', 2));
?>
]]>
</programlisting>
&example.outputs.8;
<screen>
<![CDATA[
string(0) ""
]]>
</screen>
&example.outputs.7;
<screen>
<![CDATA[
bool(false)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>strrchr</function></member>
<member><function>substr_replace</function></member>
<member><function>preg_match</function></member>
<member><function>trim</function></member>
<member><function>mb_substr</function></member>
<member><function>wordwrap</function></member>
<member><link linkend="language.types.string.substr">Посимвольный доступ и изменение строки</link></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
-->