Php поиск вхождения. Поиск подстроки в строке с помощью PHP. Поиск позиции последнего вхождения подстроки и подводные камни

strripos — Find the position of the last occurrence of a case-insensitive substring in a string

Description

Find the numeric position of the last occurrence of needle in the haystack string.

Unlike the strrpos() , strripos() is case-insensitive.

Parameters

The string to search in.

If needle is not a string, it is converted to an integer and applied as the ordinal value of a character. This behavior is deprecated as of PHP 7.3.0, and relying on it is highly discouraged. Depending on the intended behavior, the needle should either be explicitly cast to string, or an explicit call to chr() should be performed.

If zero or positive, the search is performed left to right skipping the first offset bytes of the haystack .

If negative, the search is performed right to left skipping the last offset bytes of the haystack and searching for the first occurrence of needle .

This is effectively looking for the last occurrence of needle before the last offset bytes.

Return Values

Returns the position where the needle exists relative to the beginnning of the haystack string (independent of search direction or offset).

Note : String positions start at 0, and not 1.

Returns FALSE if the needle was not found.

Warning

This function may return Boolean FALSE , but may also return a non-Boolean value which evaluates to FALSE . Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

Examples

Example #1 A simple strripos() example

$haystack = "ababcd" ;
$needle = "aB" ;

$pos = strripos ($haystack , $needle );

if ($pos === false ) {
echo "Sorry, we did not find ($needle ) in ($haystack )" ;
} else {
echo "Congratulations!\n" ;
echo "We found the last ($needle ) in ($haystack ) at position ($pos )" ;
}
?>

1.1K

Функция PHP strpos используется для поиска подстроки в заданной строке. Она возвращает числовое значение первого вхождения заданной на поиск подстроки.

Синтаксис для использования strpos

PHP функция strpos используется следующим образом:

$position = strpos($given_string, $search_string);

Примечание: При поиске с помощью функции strpos регистр имеет значение. Так что поиск по ключевым словам “Test” и “test” даст различные результаты.

Отсчет позиции начинается с 0 , а не 1 .

На примере демо-версий я продемонстрирую использование этой функции для поиска заданной подстроки и вводимого пользователем значения.

Простой пример использования функции strpos

Посмотрите следующий пример, в котором я использовал заданные для поиска значения, чтобы продемонстрировать работу функции strpos PHP :


Посмотреть онлайн демо-версию и код

Код PHP :

"; echo " The given substr found at: $posistion"; } ?>

strpos PHP пример:

The string contains the search term: ‘strpos’! The given substring found at: 10

Пример использования strpos для поиска вводимого пользователем термина

Этот метод может оказаться полезным в определенных сценариях. Например, когда в форму не разрешается вводить определенные слова.

Кроме этого можно проверить, содержится ли слово, заданное пользователем на поиск, в исходной строке. Исходя из этого, можно вывести определенные результаты в виде ответа.

В этой демо-версии, пользователь может ввести термин в текстовое поле. После нажатия кнопки запускается функция strpos, чтобы проверить, содержит ли исходная строка подстроку. На экран будет выводиться соответствующее сообщение:


Для демо-версии я использовал следующую исходную строку:

$source_string = "In this demo, I am using a user entered search term to check if string contains search term or not by using strpos!";

Попробуйте ввести разные буквы или слова для поиска, чтобы проверить вернет ли функция значение false . Кроме этого попробуйте ввести термины заглавными или маленькими буквами, чтобы увидеть разницу.

Для этого был использован следующий пример PHP strpos utf 8 :

"; if ($posistion === false) { echo "The source string does not contain the: "$search_term"!"; } else { echo "The string contains the search term: "$search_term"!
"; echo " The given substring found at: $posistion"; } echo "

"; } ?>

Также можете посмотреть разметку strpos PHP примера:

Полную версию можно увидеть в исходном коде страницы демо-версии.

Кроме этого вы можете использовать в качестве источника базу данных для создания системы поиска на своем сайте.

Поиск без учета регистра с помощью функции stripos

Как уже упоминалось, функция PHP strpos чувствительна к регистру. Для поиска строк независимо от регистра используйте функцию PHP stripos .

Синтаксис почти такой же, как для strpos :

$position = stripos($given_string, $search_string);

Теперь я покажу, как работает stripos .

Пример использования функции stripos

В этой демо-версии источником для поиска является следующая строка:

$source_string = "This is a stripos Tutorial which is used to search strings. It tells whether a given string contains a search string or not!";

Искомый термин: $search_term = ‘tutorial’;

Предположим, что нам нужно найти подстроку в строке при помощи php.

Для решения этой задачи подходят разные инструменты.

Поиск подстроки с использованием функции strpos

Функция strpos возвращает позицию первого вхождения подстроки.

$mystring = "abc"; $findme = "a"; $pos = strpos($mystring, $findme); // Заметьте, что используется ===. Использование == не даст верного // результата, так как "a" находится в нулевой позиции. if ($pos === false) { echo "Строка "$findme" не найдена в строке "$mystring""; } else { echo "Строка "$findme" найдена в строке "$mystring""; echo " в позиции $pos"; }

Функция возвращает либо порядковый номер первого символа подстроки в исходной строке, либо false, в случае если ничего не найдено.

Для этой функции существует регистронезависимый аналог: stripos

Еще одна функция для этой задачи: strrpos . Она находит последнее вхождение подстроки.
У нее, разумеется, тоже имеется регистронезависимый вариант: strripos

Если функция strpos не подходит для вашей цели, то найдите другой инструмент.
Для работы со строками существует также масса функций, о существовании которых необходимо знать: функции для работы со строками.

Поиск подстроки при помощи функции preg_match

Эта функция производит поиск подстроки при помощи регулярного выражения.

Регулярное выражение — это шаблон, который сравнивается со строкой. Под один шаблон может подходить сразу множество разных строк.

Они пригодятся если вам нужно производить поиск не по конкретной подстроке, а найти все строки, обладающие свойствами, описанными при помощи регулярного выражения. Знание этой темы сильно расширяет ваши возможности в работе со строками.

Функция strpos() в PHP - одна из самых используемых при обработке данных строкового типа. Она позволяет определить позицию, начиная с которой в исходную строку входит искомая подстрока. При этом для получения адекватного результата следует учитывать ряд тонкостей.

Входные и выходные параметры

В общем виде синтаксис функции PHP strpos() выглядит следующим образом:

Mixed strpos (string $string , mixed $substring[, int $offset = 0 ])

На вход принимаются два обязательных аргумента и один необязательный:

  • Исходная строка - $string, в которой и будет произведен поиск.
  • Искомая подстрока - $substring. Данный параметр имеет тип mixed. Это означает, что кроме строкового типа данных, функция может принять любой другой. В этом случае аргумент будет преобразован в целое число и обработан, как символьный код.
  • Необязательный параметр, определяющий смещение - $offset. По умолчанию поиск производится с самого начала строки $string, а смещение равно 0. Если определить отрицательное смещение, оно будет отсчитываться с конца строки.

Функция PHP strpos() возвращает позицию, начиная с которой $substring входит в $string. Если таких вхождений несколько, будет возвращена только позиция первого из них.

Если совпадений нет, на выходе будет булево значение false.

Особенности работы

При поиске позиции подстроки важно учитывать, что нумерация символов начинается с нуля. Следовательно, 0 - одно из корректных возвращаемых значений.

При нестрогом сравнении 0 приводится к логическому типу, превращается в false и может быть воспринят как отсутствие вхождений. Поэтому очень важно использовать строгое равенство (===), учитывающее тип сравниваемых величин.

Кроме того, strpos() - пример PHP-функции, зависимой от регистра символов.

Примеры использования

Пример 1. Простое вхождение. Требуется найти позицию, на которой подстрока key входит в строку monkeys.

Пример 2. Отсутствие вхождений. Если изменить искомую строку на KEY, функция PHP strpos() не обнаружит совпадений, так как является регистрозависимой. Результатом будет булево значение false.

Пример 3. Вхождение на нулевой позиции. Важно использовать строгое равенство, проверяя результат работы функции, иначе можно получить некорректный результат.

Первые две проверки определят отсутствие вхождений, несмотря на то, что подстрока life входит в исходную строку lifehack.

Пример 4. Смещение начальной позиции с помощью параметра $offset.

После установки смещения, равного 3, поиск начинается с символа "e".