Поиск подстроки в строке на языке PHP
PHP позволяет осуществлять поиск подстроки в строке с помощью функций, работающих с регулярными выражениями, а также с помощью стандартных строковых функций.
Для поиска подстроки в строке можно использовать функции strpos() и strstr(). Функция strpos() возвращает позицию (индекс) первого вхождения искомой подстроки в строке, или false, если подстрока не найдена. Например:
$haystack = 'The quick brown fox jumps over the lazy dog';
$needle = 'fox';
$position = strpos($haystack, $needle);
if ($position !== false) {
echo 'Найдено в позиции ' . $position;
} else {
echo 'Подстрока не найдена';
}
В данном примере функция strpos() найдет подстроку 'fox' в строке $haystack и вернет значение 16.
Функция strstr() возвращает часть строки, начиная с первого вхождения искомой подстроки (или от первого символа исходной строки, если подстрока не найдена), или false, если подстрока не найдена. Пример использования функции strstr():
$haystack = 'The quick brown fox jumps over the lazy dog';
$needle = 'fox';
$result = strstr($haystack, $needle);
if ($result !== false) {
echo 'Найдено: ' . $result;
} else {
echo 'Подстрока не найдена';
}
В данном примере функция strstr() вернет строку 'fox jumps over the lazy dog', начиная с первого вхождения подстроки 'fox' в строке $haystack.
Если требуется найти все вхождения подстроки в строку, можно воспользоваться функцией strpos() в цикле, проходящем по всей строке. Пример:
$haystack = 'The quick brown fox jumps over the lazy dog';
$needle = 'o';
$positions = array();
for ($i = 0; $i < strlen($haystack); $i++) {
$pos = strpos($haystack, $needle, $i);
if ($pos !== false) {
$positions[] = $pos;
$i = $pos;
} else {
break;
}
}
if (!empty($positions)) {
echo 'Найдено ' . count($positions) . ' совпадений: ' . implode(',', $positions);
} else {
echo 'Подстрока не найдена';
}
В данном примере функция strpos() находит все вхождения символа 'o' в строку $haystack и запоминает их позиции в массиве $positions.
Также можно использовать регулярные выражения для поиска подстроки в строке. Например, функция preg_match() позволяет проверять, содержится ли данная подстрока в строке, используя регулярное выражение. Пример:
$haystack = 'The quick brown fox jumps over the lazy dog';
$needle = '/fox/';
if (preg_match($needle, $haystack, $matches)) {
echo 'Совпадение найдено: ' . $matches[0];
} else {
echo 'Подстрока не найдена';
}
В данном примере регулярное выражение '/fox/' ищет подстроку 'fox' в строке $haystack, и функция preg_match() возвращает true и заполняет массив $matches, если совпадение найдено, или false, если подстрока не найдена.