(PHP 5 >= 5.2.0, PHP 7, PHP 8)
mb_strripos — Finds position of last occurrence of a string within another, case insensitive
$haystack,$needle,$offset = 0,$encoding = null
mb_strripos() performs multi-byte safe
strripos() operation based on
number of characters. needle position is
counted from the beginning of
haystack. First character's position is
0. Second character position is 1.
Unlike mb_strrpos() ,
mb_strripos() is case-insensitive.
haystack
The string from which to get the position of the last occurrence
of needle.
needle
The string to find in haystack.
offset
May be specified to begin searching an arbitrary number of characters into
the haystack. Negative values will stop searching at an arbitrary point
prior to the end of the haystack.
encodingThe encoding
parameter is the character encoding. If it is omitted or null , the internal character
encoding value will be used.
Return the numeric position of
the last occurrence of needle in the
haystack string, or false
if needle is not found.
offset is greater than the length of
haystack, a
ValueError will be thrown.
| Version | Description |
|---|---|
| 8.0.0 |
needle now accepts an empty string.
|
| 8.0.0 |
encoding is nullable now.
|
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;
}
?><?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)