PHP Conference Japan 2024

mb_strripos

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

mb_strripos不区分大小写地查找字符串在另一字符串中最后一次出现的位置

描述

mb_strripos(
    字符串 $haystack,
    字符串 $needle,
    整数 $offset = 0,
    ?字符串 $encoding = null
): 整数|false

mb_strripos() 基于字符数执行多字节安全的 strripos() 操作。 needle 的位置从 haystack 的开头算起。第一个字符的位置为 0。第二个字符的位置为 1。与 mb_strrpos() 不同,mb_strripos() 不区分大小写。

参数

haystack

要从中获取 needle 最后一次出现的字符串

needle

要在 haystack 中查找的字符串

offset

haystack 中开始搜索的位置

encoding

要使用的字符编码名称。如果省略,则使用内部字符编码。

返回值

返回 needlehaystack 字符串中最后一次出现的数字位置,如果未找到 needle,则返回 false

变更日志

版本 描述
8.0.0 needle 现在接受空字符串。
8.0.0 encoding 现在可以为 null。

参见

  • strripos() - 在字符串中查找不区分大小写的子字符串的最后一次出现的位置
  • strrpos() - 查找子字符串在字符串中最后一次出现的位置
  • mb_strrpos() - 查找字符串在字符串中最后一次出现的位置

添加注释

用户贡献的注释 2 个注释

easai
14 年前
以下是 PHP 中类似 Java 的 startsWith/endsWith 实现。

<?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;
}
?>
ivrokrambler at gmail dot com
7 年前
<?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