Предположим, что нам нужно найти подстроку в строке при помощи 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 располагает широким выбором функций по работе с регулярными выражениями.