PHP 字符串怎么查找

在日常的PHP代码开发里,“找字符串”是几乎每个项目都会用到的小操作——比如用户注册时检查昵称是否包含敏感词,或者做新闻系统时提取文章开头的摘要,本质都是在大段文本里找特定的小字符串。这个操作说简单也简单,说灵活也有不少要注意的小细节,今天就用生活里找东西的例子,把它讲明白。

最常用的:找“有没有”

很多时候我们只需要知道“目标字符串在不在原文本里”,这时候用strpos()就够了。举个例子:你在写一个外卖小程序,要检查用户的收货地址里有没有“学校”这两个字,要是有的话就自动切换到“校园配送”选项。

PHP 字符串怎么查找

代码里可以这么写:

`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的字符串查找函数都是围绕“有没有、在哪、有几个”这三个核心需求设计的,用的时候先想清楚自己要什么,选对应的函数,避开类型判断的坑,就能轻松完成各种查找任务。

上一篇 PHP 如何判断类型