在 PHP 开发中,字符串处理是最常见的操作之一。
尤其是在 Laravel、WordPress、接口开发、数据清洗、商品审核、日志分析等业务里,经常需要判断:
-
某段文字是否包含指定内容
-
某个关键词第一次出现的位置
-
截取某段匹配后的内容
而 strpos() 和 strstr() 就是 PHP 中两个经典的字符串函数。
很多刚接触 PHP 的开发者,都会把这两个函数混淆。
今天就详细聊聊:
-
strpos()返回什么 -
strstr()返回什么 -
两者的区别
-
实际开发中的使用场景
-
常见坑点
一、strpos() 是什么
基本语法
strpos(字符串, 查找内容)
作用:
查找某个字符串第一次出现的位置
二、strpos() 返回什么
1、找到时
返回:
字符串下标位置(从0开始)
例如:
$str = 'hello world';
echo strpos($str, 'world');
输出:
6
因为:
hello_ world
0123456
2、没找到时
返回:
false
例如:
strpos('hello', 'php');
结果:
false
三、strpos() 最容易踩的坑
很多人会这样写:
if (strpos($str, 'a')) {
echo '包含';
}
其实这是错误写法。
原因:
strpos('abc', 'a')
返回:
0
而:
0 == false
会导致误判。
也就是说:
明明找到了,但 if 判断却失败了
四、strpos() 正确写法
必须使用:
!== false
正确示例:
if (strpos($str, 'a') !== false) {
echo '包含';
}
这是 PHP 开发中的经典写法。
五、strstr() 是什么
基本语法
strstr(字符串, 查找内容)
作用:
查找字符串中第一次出现的内容,
并返回从该位置到结尾的字符串
六、strstr() 返回什么
1、找到时
返回:
从匹配位置开始到结尾的字符串
例如:
$str = '美国站纽扣电池需贴标';
echo strstr($str, '纽扣电池');
输出:
纽扣电池需贴标
2、没找到时
返回:
false
例如:
strstr('hello', 'php');
结果:
false
七、strpos() 和 strstr() 的核心区别
| 函数 | 返回值 | 常见用途 |
|---|---|---|
| strpos() | 位置下标 | 判断位置 |
| strstr() | 截取后的字符串 | 提取内容 |
八、实际开发案例
1、判断是否包含关键词(推荐 strpos)
例如商品审核:
if (strpos($safe_audit_remark, '纽扣电池需贴标') !== false) {
$need_label = 1;
}
意思:
只要备注中包含“纽扣电池需贴标”
就认为需要贴标
2、提取匹配后的内容(适合 strstr)
例如:
$str = '订单号:A123456';
$result = strstr($str, 'A');
结果:
A123456
适合做:
-
提取编号
-
截取关键字后的内容
-
提取日志片段
九、总结
strpos() 和 strstr() 都属于 PHP 中经典的字符串函数。
但两者用途并不一样:
-
strpos()更适合做“是否包含”与“位置判断” -
strstr()更适合做“匹配后字符串提取”
温馨提示:
本文最后更新于
2026-05-14 20:39:27,若文章内容或图片失效,请留言或联系站长反馈!
© 版权声明
本文发表于「海知新」,转载请注明出处。本站内容仅用于学习、记录与技术交流,部分资源来源于互联网,如有侵权请联系删除。
THE END















暂无评论内容