PHP 8.5.0 RC4 available for testing

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. Отрицательные значения остановят поиск в произвольной точке до конца строки haystack.

encoding

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

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

Функция возвращает числовую позицию последнего вхождения подстроки 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