php 8.1 中反向查找字符串最后一次出现位置应使用 strrpos(),它返回起始索引(从0开始),支持正负偏移;未找到时返回 false,需用全等判断;多字节字符推荐 mb_strrpos()。

PHP 8.1 中反向查找字符串最后一次出现的位置,推荐使用 strrpos() 函数 —— 它专为从右往左搜索子串而设计,返回的是最后一次匹配的起始位置(从 0 开始计数),不是从末尾倒数。
strrpos() 是最直接可靠的方式
该函数语法为 strrpos($haystack, $needle, $offset),其中:
- $haystack:被搜索的主字符串
- $needle:要查找的子串(支持多字节字符,但注意编码一致性)
- $offset(可选):从指定位置开始向左搜索;正数表示从开头偏移后截取子串再搜索,负数表示从末尾倒数位置开始向左搜(PHP 7.1+ 支持负偏移)
示例:
echo strrpos("hello world, hello PHP", "hello"); // 输出 13(第二次 "hello" 的位置)注意大小写敏感性
strrpos 区分大小写。如需忽略大小写,请改用 strripos():
echo strripos("Hello World, HELLO PHP", "hello"); // 输出 13处理未找到的情况
当子串不存在时,strrpos 返回 false,不是 -1。务必用全等判断避免误判:
- ✅ 正确:if (false !== strrpos($str, $sub)) { ... }
- ❌ 错误:if (strrpos($str, $sub) !== -1) { ... }(因为根本不会返回 -1)
替代方案:用 mb_strrpos 处理中文等多字节字符
如果字符串含 UTF-8 中文、日文等,且已启用 mbstring 扩展,建议用 mb_strrpos() 避免字节截断问题:
echo mb_strrpos("苹果 iPhone 苹果", "苹果"); // 输出 9(按字符计,非字节)记得指定编码参数更稳妥:mb_strrpos($str, $sub, 0, 'UTF-8') 不复杂但容易忽略细节
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











