PHP 字符串怎么查找
在日常的PHP代码开发里,“找字符串”是几乎每个项目都会用到的小操作——比如用户注册时检查昵称是否包含敏感词,或者做新闻系统时提取文章开头的摘要,本质都是在大段文本里找特定的小字符串。这个操作说简单也简单,说灵活也有不少要注意的小细节,今天就用生活里找东西的例子,把它讲明白。
最常用的:找“有没有”
很多时候我们只需要知道“目标字符串在不在原文本里”,这时候用strpos()就够了。举个例子:你在写一个外卖小程序,要检查用户的收货地址里有没有“学校”这两个字,要是有的话就自动切换到“校园配送”选项。

代码里可以这么写:
`php
$address = "北京市XX大学";
$keyword = "学校";
if (strpos($address, $keyword) !== false) {
echo "自动切换校园配送";
}
`
这里要注意一个很容易踩的坑:strpos()找到目标字符串时,返回的是它在原文本里的位置(比如“学校”在“北京市XX大学”里是第6个字符,返回数字6);如果没找到才返回false。如果用== false判断,万一目标刚好在第0位(比如地址是“学校路12号”),0 == false会成立,就会误判成“没找到”。所以一定要用!==,严格判断类型和值。
如果你的PHP版本在7.0以上,还可以用更直观的str_contains(),直接返回布尔值,不用再纠结类型判断:
`php
if (str_contains($address, $keyword)) {
echo "自动切换校园配送";
}
`
这个函数更符合“找有没有”的直觉,新手用起来不容易出错。
想找“在哪”:定位位置
要是不光要知道“有没有”,还要知道“在第几个字的位置”,strpos()刚好能满足。还是刚才的例子,用户昵称是“XX小学三年级的小明”,你想提取“小学”后面的年级,就可以先找到“小学”的位置,再往后数2个字符:
`php
$nickname = "XX小学三年级的小明";
$target = "小学";
$pos = strpos($nickname, $target);
if ($pos !== false) {
// 从“小学”的位置+2,取后面3个字符
$grade = substr($nickname, $pos + 2, 3);
echo $grade; // 输出“三年级”
}
`
要是遇到大小写不一致的情况,比如原文本是“X小学”,关键词是“小学”,strpos()会找不到,这时候可以先把两个字符串都转成统一小写再找:
`php
if (strpos(strtolower($address), strtolower($keyword)) !== false) {
// 不区分大小写的查找
}
`
就像你找抽屉里的红袜子,不管抽屉标签是“红袜”还是“红袜子”,统一先看颜色,就不会漏了。
找“有几个”:统计次数
有时候需要知道目标字符串出现了多少次,比如统计一篇评论里“点赞”这个词出现的次数,substr_count()就能搞定。举个例子:商家要统计用户评价里提到“新鲜”的次数,判断食材是否受欢迎:
`php
$comment = "今天的水果很新鲜,新鲜多汁的草莓超好吃!";
$count = substr_count($comment, "新鲜");
echo $count; // 输出2
`
这个函数不会像循环那样容易写错逻辑,直接就能得到结果,适合简单的统计场景。
除了这些基础函数,还有一些场景可以灵活调整用法——比如要找最后一次出现的位置,就用strrpos();要找指定范围内的字符串,还可以给strpos()加第三个参数(开始查找的位置)。总的来说,PHP的字符串查找函数都是围绕“有没有、在哪、有几个”这三个核心需求设计的,用的时候先想清楚自己要什么,选对应的函数,避开类型判断的坑,就能轻松完成各种查找任务。