As expected, grapheme_stripos() does return boolean FALSE if the needle is not found in the haystack.
Use strict type comparison to check for that condition, like:
if (FALSE === grapheme_stripos('a', 'b')) {print 'Needle not found';}(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
grapheme_stripos — Вычисляет позицию первого вхождения подстроки в графемных кластерах без учёта регистра
Процедурный стиль
$haystack,$needle,$offset = 0,$locale = ""Функция находит позицию первого вхождения подстроки без учёта регистра. Позиция вычисляется в графемных кластерах.
haystackСтрока по стандарту UTF-8, в которой требуется найти подстроку.
needleПодстрока по стандарту UTF-8, которую требуется найти.
offset
Необязательный параметр offset указывает смещение,
с которого начнётся поиск в строке haystack. Смещение вычисляется в графемных кластерах, а не в байтах или символах.
Отрицательные смещения отсчитываются с конца строки,
но позиция по-прежнему вычисляется с начала строки haystack, независимо от значения параметра offset.
locale
Функция возвращает позицию в виде целого числа. Функция grapheme_stripos()
вернёт значение false, если не найдёт подстроку needle.
| Версия | Описание |
|---|---|
| 8.5.0 |
Добавили необязательный параметр locale.
|
| 7.1.0 |
Параметр offset теперь поддерживает отрицательные значения.
|
Пример #1 Пример поиска позиции первого вхождения подстроки функцией grapheme_stripos()
<?php
// Символ | Название | Кодовая точка | Форма нормализации
// å: 'LATIN SMALL LETTER A WITH RING ABOVE', U+00E5, NFD
$char_a_ring_nfd = "a\xCC\x8A";
// ö: 'LATIN SMALL LETTER O WITH DIAERESIS', U+00F6, NFD
$char_o_diaeresis_nfd = "o\xCC\x88";
// Ö: 'LATIN CAPITAL LETTER O WITH DIAERESIS', U+00D6, NFD
$char_O_diaeresis_nfd = "O\xCC\x88";
print grapheme_stripos(
$char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_nfd,
$char_O_diaeresis_nfd
);Результат выполнения приведённого примера:
2