php8.0起必须用str_contains()判断字符串是否包含子串,它返回布尔值、语法直白、安全无警告;旧版需用strpos() !== false或封装兼容函数;禁用in_array()、strstr()等错误写法。

PHP8.0中判断字符串是否包含子串,必须用str_contains()函数,它取代了旧版中容易出错的strpos() !== false写法,语法更直白、返回值更安全,且不触发警告。
直接用str_contains()判断
第一步:调用str_contains(),传入主字符串和待搜索子串,例如str_contains('hello world', 'world');
第二步:函数返回布尔值——包含返回true,不包含返回false,无需再做!== false判断;
这一步不能用strpos()替代,因为strpos('abc', 'a')返回0,而0 == false会导致误判为“未找到”。
兼容低版本PHP的写法(仅当必须支持PHP7.x时)
方法一:用strpos($haystack, $needle) !== false,注意必须用严格不等于!==,否则首字符匹配时会出错;
方法二:封装一个兼容函数,在PHP8+中直接委托给str_contains(),在PHP7中走strpos分支;
【不可省略】如果项目已升级到PHP8.0及以上,禁止再用strpos做存在性判断——既冗余又易错。
常见错误写法避坑
别用in_array()查字符串,它只用于数组;
别用strstr()然后判空,它返回子串起始位置后的剩余字符串,不是布尔值,逻辑绕远且易漏判空字符串;
别在大小写敏感场景下默认忽略大小写——str_contains()区分大小写,如需忽略,先统一转小写:str_contains(strtolower($text), strtolower($search))。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











