PHP 如何判断字符串包含

生活里咱们经常遇到要“查东西”的场景,比如想知道朋友圈文案里有没有“奶茶”两个字,或者输入密码时要检查有没有数字,放到PHP里,其实就是判断一个字符串里有没有包含另一个子串。很多新手刚学PHP时,总觉得这是个复杂的功能,其实用几个简单的内置函数就能搞定,今天咱们就用日常例子把这事讲明白。

最常用的基础方法:strpos()函数

咱们先想个生活化的例子:你在奶茶店点单,想确认店员有没有把“少糖”加到备注里,那怎么用PHP实现?strpos()就是干这个的。它的用法很简单,就是“在长字符串里找短字符串”,如果能找到就返回位置,找不到就返回false。

PHP 如何判断字符串包含

举个代码例子:

`php

$orderNote = "少糖加冰";

$checkWord = "少糖";

if (strpos($orderNote, $checkWord) !== false) {

echo "备注里包含少糖";

} else {

echo "备注里没有少糖";

}

`

这里要特别注意一个小坑:如果子串刚好在字符串开头,strpos()会返回0,这时候如果用== false判断,PHP会把0当成false,就会得到错误结果。所以必须用!== false来严格判断,这就像你点单时,备注第一个字就是你要的,不能因为位置是0就以为没写。

对大小写不敏感的场景:stripos()函数

有时候咱们不纠结大小写,比如想知道用户留言里有没有“生日”,不管用户写“生日”还是“BIRTHDAY”“Birthday”,都要判断包含的话,就用stripos()。它的用法和strpos()几乎一样,只是不会区分字母的大小写。

比如用户留言是“今天是我的Birthday”,用stripos()判断:

`php

$userMsg = "今天是我的Birthday";

if (stripos($userMsg, "生日") !== false) {

echo "留言里包含生日相关内容";

}

`

这就像你刷朋友圈,不管朋友写“生日”还是大写的“BIRTHDAY”,你都能一眼看出来是说生日,不用纠结大小写。

直接判断包含的简化方法:str_contains()函数

如果咱们用的是PHP 8.0及以上的版本,还有更省心的函数——str_contains()。它就是专门用来判断“包含与否”的,返回值直接是布尔值,不用再判断是不是false,写代码更简单。

还是用奶茶点单的例子:

`php

$orderNote = "少糖加冰";

$checkWord = "少糖";

if (str_contains($orderNote, $checkWord)) {

echo "备注里包含少糖";

}

`

这个函数就像你直接问店员“我的备注里有没有少糖”,不用再关心位置或大小写的坑,直接得到“有”或“没有”的答案,特别适合新手快速上手。

可能有人会问,这些函数都能判断包含,到底用哪个?其实很简单:如果是PHP 8及以上,优先用str_contains(),写起来最省事;如果是旧版本,就用strpos(),一定要注意用!== false判断,别踩开头位置为0的坑;如果需要不区分大小写,不管版本,都用stripos()就对了。

其实PHP判断字符串包含,本质就是“找子串”,就像咱们找东西,要么直接问“有没有”,要么顺着找位置,核心逻辑都一样。掌握这几个方法,就能轻松解决日常开发里的这类小需求,不用再纠结复杂的正则表达式,新手也能快速上手。

上一篇 Java JUnit 怎么用