Поиск подстроки в строке с помощью PHP

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

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

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

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

Пример:

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

Источник: Документация по strpos

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

При использовании этой функции, следует уделить особое внимание тому, что она может вернуть 0, в качестве результата, что говорит о нахождении подстроки в самом начале исходной строки. Поэтому нужно использовать троекратный знак равно $pos === false, для проверки успешности поиска.
Остальные «фишки» операторов сравнения описаны здесь: операторы сравнения.

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

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

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

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

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

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

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

Пример:

$html = 'content <title>hello php!</title> content';
if (preg_match("!<title>(.*?)</title>!si", $html, $matches)){
   echo $matches[1];
} else {
   echo "Тег не найден";
}

Начать рекомендую с этой статьи: регулярные выражения.

PHP располагает широким выбором функций по работе с регулярными выражениями.

Была ли эта статья полезна?
Да
Нет