str_contains() 是判断路径是否包含关键词的最简洁方法,严格区分大小写且不解析路径语义,适用于简单关键字筛查;需忽略大小写时手动转小写,目录级判断应改用 str_starts_with 或正则。

直接用 str_contains() 判断路径是否包含某个字符串,最简洁写法就是:str_contains($path, 'keyword') —— 不需要额外 trim、不区分大小写需手动处理、路径斜杠不影响判断。
基础用法:判断是否含关键词
比如检查路径里有没有 admin 或 uploads:
-
str_contains('/var/www/admin/index.php', 'admin')→true -
str_contains('/home/user/public_html/uploads/', 'uploads')→true -
str_contains('/api/v1/users', 'v2')→false
注意路径斜杠和大小写
str_contains() 是严格区分大小写的纯子串匹配,不解析路径语义:
-
str_contains('/Users/John/Images', 'john')→false(小写不匹配) - 如需忽略大小写,用
str_contains(strtolower($path), strtolower('john')) - 开头的
/、中间双斜杠//、结尾斜杠都不影响匹配,无需预处理
慎用于“目录级”判断(如是否在 uploads 下)
如果目标是判断「是否属于某目录下」,仅靠 str_contains 可能误判:
-
str_contains('/var/uploads_log/file.txt', 'uploads')→true,但实际不在uploads/目录下 - 更稳妥方式:用
str_starts_with($path, '/uploads/')或正则匹配完整路径段 - 若只是简单关键字筛查(如日志过滤、路由关键词识别),
str_contains完全够用且最轻量
替代方案对比(不推荐除非有特殊需求)
不用 strpos($path, 'xxx') !== false,也不用 mb_strpos —— PHP 8.2 中 str_contains 语义清晰、性能相当、代码更短,是官方推荐写法。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











