Содержание
В PHP представлена функция strpos(), использование которой позволяет получить позицию наиболее раннего вхождения в строке. Это позволяет организовывать проверку наличия содержимого где-либо на странице или в коде, а компоненты комбинацииif-elseif-elseделают реальным создание условий, завязанных на этом факторе.
Синтаксис
Запись производится в следующем формате:
<?
strpos ($haystack, $needle, $offset)
?>
Первые два параметра являются обязательными и могут быть представлены строками (исключение рассмотрено ниже), второй выступает в качестве опционального и составляет определённое число.
Можно использовать как и слова, заключённые в кавычки, так и переменные, регулярные выражения.
Поддерживаемые версии
Воспользоваться функцией можно начиная с четвёртого крупного обновления языка. Синтаксис сохранился, однако параметр $needle, следующий за $haystack и стоящий перед необязательного $offset, изменил своё поведение – если он не является строкой, то переводится в целое число и распознаётся в качестве HTML-мнемоники. Полагаться на эту особенность не рекомендуется начиная с версии 7.3, а в PHP 8 это вовсе стало невозможным.
Альтернативы strpos()
stripos()
Функция выполняет схожие действия. Её единственное отличие от главным образом рассматриваемой в материале выражается в осуществлении поиска вне зависимости от регистра.
strstr()
В отличие от strpos(), данная функция выводит на экран само вхождение подстроки, а не её положение.
Примеры использования
Простой поиск с переменными
<?
$base = «В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!»;
$request = «цитрус»;
$proccess = strpos($base, $request);
if($proccess !== false) {
echo»Найдено!»;
} else {
echo»Результаты не найдены!»;
}
?>
Обратите внимание, что в условии можно указывать !== или ===. Остальные операторы не приведут к правильному результату.
Поиск с переменными вне зависимости от регистра
<?
$base = «ABC»;
$request = «b»;
$proccess = stripos($base, $request);
if($proccess !== false) {
echo»Найдено!»;
} else {
echo»Результаты не найдены!»;
}
?>
stripos() не работает с кириллицей. Для этих задач нужно задействовать mb_stripos().