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
): 整數 (int)|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 則註記

0
easai
14 年前
以下是 PHP 中類似 Java 的 startsWith/endsWith 實作。

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

函式
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;
}
?>
-1
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