ConFoo 2025

mb_stristr

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_stristrНаходит первое вхождение подстроки в строку без учёта регистра

Описание

mb_stristr(
    string $haystack,
    string $needle,
    bool $before_needle = false,
    ?string $encoding = null
): string|false

Функция mb_stristr() находит первое вхождение подстроки needle в строку haystack и возвращает часть haystack. Функция mb_stristr(), в отличие от функции mb_strstr(), не учитывает регистр. Если подстрока needle не найдена, возвращается false.

Список параметров

haystack

Строка, из которой можно получить первое вхождение подстроки needle

needle

Подстрока для поиска в строке haystack

before_needle

Определяет, какую часть строки haystack вернёт эта функция. Если установлено true, возвращается часть строки haystack от начала до первого вхождения подстроки needle (исключая подстроку). Если установлено false, возвращается часть строки haystack от первого вхождения подстроки needle до конца (включая подстроку).

encoding

Название кодировки символов. Если этот параметр опущен, будет использована внутренняя кодировка символов.

Возвращаемые значения

Возвращает часть строки haystack или false, если подстрока needle не найдена.

Список изменений

Версия Описание
8.0.0 needle теперь принимает пустую строку.
8.0.0 Теперь параметр encoding принимает значение null.

Смотрите также

  • stristr() - Регистронезависимый вариант функции strstr
  • strstr() - Находит первое вхождение подстроки
  • mb_strstr() - Находит первое вхождение подстроки в строке

Добавить

Примечания пользователей 1 note

up
0
nowfel dot terki at mailfence dot com
2 years ago
Be aware that if needle is an empty string, mb_stristr return the haystack by default.

For exemple:

<?php
if (mb_stristr("foo", "")) {
echo
"We enter in condition";
}
?>

Because in the above exemple the return of mb_stristr is "foo".

So if we do not want this kind of behaviour, we must set the third argument, ($before_needle) to true.

<?php
if (mb_stristr("foo", "", true)) {
echo
"We do not enter in condition";
}
?>

It can be useful to know it, specially when needle is dynamic.
To Top