Функция strpos() осуществляет поиск заданной строки в другой строке. Возвращает позицию первого вхождения искомой строки, либо FALSE, если подстрока не найдена. При этом отсчет ведется с 0, то есть первый символ занимает нулевую позицию.
Общий синтаксис:
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
Первый параметр $haystack – это строка, в которой осуществляется поиск. Второй параметр $needle – искомая подстрока. Третий параметр – необязательный и указывает позицию, с которой необходимо осуществлять поиск.
Обратите внимание, что данная функция может возвратить 0, если искомая подстрока находится на нулевой позиции, а это значит, что при проверке возвращаемого значения с помощью «$pos == FALSE» мы получим совсем не то, что нужно, то есть 0 будет преобразован в FALSE. Чтобы избежать ошибки, лучше использовать знак «===», где сравнение используется с учетом типа данных.
Рассмотрим пример:
<?php
$teststr = 'алгоритм';
$search = 'a';
$pos = strpos($teststr, $search);
if ($pos === false) {
echo "Строка '$search' не найдена в строке '$teststr'";
} else {
echo "Строка '$search' найдена в строке '$teststr'";
echo " в позиции $pos";
}
?>
В этом примере мы получим верное значение 0, так как использовали сравнение с учетом типа возвращаемого значения.
Пример 2.
<?php
$teststr = 'мама';
$search = 'м';
$start = '1';
$pos = strpos($teststr, $search, $start);
if ($pos === false) {
echo "Строка '$search' не найдена в строке '$teststr'";
} else {
echo "Строка '$search' найдена в строке '$teststr'";
echo " в позиции $pos";
}
?>
Здесь будет выведено 2, так как поиск ведется с 1 позиции (это второй символ в строке), а искомая подстрока (символ) занимает 0 и 2 позиции.
Название функции strpos() образовано от двух слов string (строка) и position (позиция).