mb_strripos

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

mb_strripos Ищет в строке позицию последнего вхождения подстроки, без учёта регистра

Описание

mb_strripos(
    string $haystack,
    string $needle,
    int $offset = 0,
    ?string $encoding = null
): int|false

Функция mb_strripos() выполняет безопасную многобайтовую операцию strripos() на основе количества символов, а не байтов. Функция отсчитывает позицию подстроки needle с начала строки haystack. Первый символ стоит на позиции 0, позиция второго символа — 1 и так далее. Функция mb_strripos(), в отличие от функции mb_strrpos(), не чувствительна к регистру.

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

haystack

Строка, в которой требуется найти позицию последнего вхождения подстроки needle.

needle

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

offset

Начальная позиция поиска в строке haystack.

encoding

Название кодировки символов. При пропуске параметра функция интерпретирует символы в предустановленной кодировке модуля.

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

Функция возвращает числовую позицию последнего вхождения подстроки needle в строку haystack или значение false, если строка не содержит подстроку needle.

Ошибки

  • Функция выбросит ошибку ValueError, если значение параметра offset превысит длину строки haystack.

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

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

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

  • strripos() - Ищет в строке позицию последнего вхождения подстроки, без учёта регистра
  • strrpos() - Возвращает позицию последнего вхождения подстроки в строку
  • mb_strrpos() - Ищет в строке позицию последнего вхождения подстроки

Добавить

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

up
0
easai
15 years ago
Here are Java like startsWith/endsWith implementations in PHP.

<?php
function startsWith($haystack,$needle)
{
$res=FALSE;
if(
mb_strripos($haystack,$needle,0,"utf-8")==0)
$res= TRUE;
return
$res;
}

function
endsWith($haystack,$needle)
{
$res=FALSE;
$len=mb_strlen($haystack);
$pos=$len-mb_strlen($needle);
if(
mb_strripos($haystack,$needle,0,"utf-8")==$pos)
$res= TRUE;
return
$res;
}
?>
up
-1
ivrokrambler at gmail dot com
8 years ago
<?php
function backStrpos($str, $needle, $offset){
$needler = backStr($needle);
$strr = backStr($str);
$offsetr = strlen($str) - 1 - $offset;
$posr = mb_stripos($strr, $needler, $offsetr);
return
strlen($str) - 1 - $posr - strlen($needle);
}
function
backStr($str){
$str = str_replace(array('<', '>'), array('>', '<'), $str);
return
strrev($str);
}

function
backStrpos($str, $needle, $offset){
$needler = backStr($needle);
$strr = backStr($str);
$offsetr = strlen($str) - 1 - $offset;
$posr = mb_stripos($strr, $needler, $offsetr);
return
strlen($str) - 1 - $posr - strlen($needle);
}
function
backStr($str){
$str = str_replace(array('<', '>'), array('>', '<'), $str);
return
strrev($str);
}

$test = '<table><TR>TEXT</TR><TR>TEST</TR></table>';
$pos = mb_stripos($test, 'TEST', 0);
var_dump($pos);
var_dump(backStrpos($test, '<tr', $pos));
var_dump(backStrpos($test, '<tr', backStrpos($test, '<tr', $pos)));

------->
int(24)
int(19)
int(6)
To Top