PHP 函数笔记:strpos() 和 strstr() 的区别与实际应用

在 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
点赞13赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容