1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/strings/functions/strrpos.xml
2023-11-24 13:32:39 +03:00

210 lines
6.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: 2eb2cdbe58d2f35cb88ad06fa090f3c0ccd9f860 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.strrpos" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>strrpos</refname>
<refpurpose>Возвращает позицию последнего вхождения подстроки в строке</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>strrpos</methodname>
<methodparam><type>string</type><parameter>haystack</parameter></methodparam>
<methodparam><type>string</type><parameter>needle</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>offset</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<para>
Ищет позицию последнего вхождения подстроки <parameter>needle</parameter>
в строку <parameter>haystack</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>haystack</parameter></term>
<listitem>
<para>
Строка, в которой производится поиск.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>needle</parameter></term>
<listitem>
<para>
Строка для поиска.
</para>
&strings.parameter.needle.non-string;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
Если равно или больше ноля, то поиск будет идти слева направо
и, при этом, будут пропущены первые <parameter>offset</parameter>
байт строки <parameter>haystack</parameter>.
</para>
<para>
Если меньше ноля, то поиск начинается с <parameter>offset</parameter> байта справа,
а не с начала <parameter>haystack</parameter>.
Поиск выполняется справа налево, ищется первое
вхождение <parameter>needle</parameter> от выбранного байта.
<note>
<para>
Фактически это будет последнее вхождение
<parameter>needle</parameter> без учёта
<parameter>offset</parameter> последних байт.
</para>
</note>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает номер позиции последнего вхождения needle
относительно начала строки <parameter>haystack</parameter> (независимо от направления поиска и смещения (offset)).
<note>
<simpara>
Позиция в строке строки отсчитывается от 0, а не от 1.
</simpara>
</note>
</para>
<para>
Возвращает &false;, если искомая строка не найдена.
</para>
&return.falseproblem;
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&strings.changelog.needle-empty;
<row>
<entry>8.0.0</entry>
<entry>
Передача целого числа (&integer;) в <parameter>needle</parameter> больше не поддерживается.
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
Передача целого числа (&integer;) в <parameter>needle</parameter> объявлена устаревшей.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Проверка существования искомой строки</title>
<para>
Легко ошибиться и перепутать возвращаемые значения в случаях
"символ найден в нулевой позиции" и "символ не найден".
Вот так можно узнать разницу:
</para>
<programlisting role="php">
<![CDATA[
<?php
$pos = strrpos($mystring, "b");
if ($pos === false) { // обратите внимание: три знака равенства
// не найдено...
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Поиск со смещением</title>
<programlisting role="php">
<![CDATA[
<?php
$foo = "0123456789a123456789b123456789c";
var_dump(strrpos($foo, '7', -5)); // Поиск происходит в обратном направлении и
// начинается с пятой позиции с конца. Результат: int(17)
var_dump(strrpos($foo, '7', 20)); // Начинает поиск с 20 позиции в строке.
// Результат: int(27)
var_dump(strrpos($foo, '7', 28)); // Результат: bool(false)
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
int(0)
bool(false)
int(27)
bool(false)
int(17)
bool(false)
int(29)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>strpos</function></member>
<member><function>stripos</function></member>
<member><function>strripos</function></member>
<member><function>strrchr</function></member>
<member><function>substr</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
-->