-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathstrpos.xml
More file actions
234 lines (214 loc) · 7.66 KB
/
strpos.xml
File metadata and controls
234 lines (214 loc) · 7.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4b72b23513caa3a8bc520d459a0417defc7b3880 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.strpos" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>strpos</refname>
<refpurpose>Ищет позицию первого вхождения подстроки</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>strpos</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>haystack</parameter>
позицию первого вхождения подстроки <parameter>needle</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>
При установке параметра функция начнёт поиск с заданного количества символов с начала строки.
При отрицательном значении функция отсчитывает
позицию начала поиска с конца строки.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает позицию искомой подстроки относительно начала строки <parameter>haystack</parameter>
независимо от значения параметра <parameter>offset</parameter>.
Обратите также внимание, что позиция строки отсчитывается с <literal>0</literal>, а не с <literal>1</literal>.
</para>
<para>
Функция возвращает значение &false;, если не нашла строку.
</para>
&return.falseproblem;
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<itemizedlist>
<listitem>
<simpara>
Функция выбросит ошибку <classname>ValueError</classname>,
если значение параметра <parameter>offset</parameter> превысит
длину строки <parameter>haystack</parameter>.
</simpara>
</listitem>
</itemizedlist>
</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>
<row>
<entry>7.1.0</entry>
<entry>
Добавили поддержку отрицательных значений параметром <parameter>offset</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример строго сравнения значений оператором <literal>===</literal></title>
<programlisting role="php">
<![CDATA[
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Обратите внимание, что значения сравниваются оператором ===. Оператор == не будет работать
// как ожидается, поскольку позиция символа «a» — первого по счёту символа — равнялась 0.
if ($pos === false) {
echo "Функция не нашла подстроку «{$findme}» в строке «{$mystring}»";
} else {
echo "Функция нашла подстроку «{$findme}» в строке «{$mystring}»";
echo " в позиции $pos";
}
?>
]]>
</programlisting>
</example>
<example>
<title>Пример проверки результата оператором !==</title>
<programlisting role="php">
<![CDATA[
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Оператором !== тоже проверяют результат поиска позиции подстроки. Оператор != не сработает
// как ожидается, поскольку позиция подстроки 'a' равна 0. Инструкция (0 != false) вычисляется
// как false, поскольку при нестрогом сравнении false неявно приводится к 0
if ($pos !== false) {
echo "Функция нашла подстроку «{$findme}» в строке «{$mystring}»";
echo " в позиции {$pos}";
} else {
echo "Функция не нашла подстроку «{$findme}» в строке «{$mystring}»";
}
?>
]]>
</programlisting>
</example>
<example>
<title>Пример установки смещения</title>
<programlisting role="php">
<![CDATA[
<?php
// Игнорируем символы до значения смещения, а затем находим символ
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // Переменная $pos = 7, а не 0
echo $pos, PHP_EOL;
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.bin-safe;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>stripos</function></member>
<member><function>str_contains</function></member>
<member><function>str_ends_with</function></member>
<member><function>str_starts_with</function></member>
<member><function>strrpos</function></member>
<member><function>strripos</function></member>
<member><function>strstr</function></member>
<member><function>strpbrk</function></member>
<member><function>substr</function></member>
<member><function>preg_match</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
-->