PHP 如何判断字符串包含
生活里咱们经常遇到要“查东西”的场景,比如想知道朋友圈文案里有没有“奶茶”两个字,或者输入密码时要检查有没有数字,放到PHP里,其实就是判断一个字符串里有没有包含另一个子串。很多新手刚学PHP时,总觉得这是个复杂的功能,其实用几个简单的内置函数就能搞定,今天咱们就用日常例子把这事讲明白。
最常用的基础方法:strpos()函数
咱们先想个生活化的例子:你在奶茶店点单,想确认店员有没有把“少糖”加到备注里,那怎么用PHP实现?strpos()就是干这个的。它的用法很简单,就是“在长字符串里找短字符串”,如果能找到就返回位置,找不到就返回false。

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