本文介绍如何在 php 中检查某个子字符串是否存在于数组的任意元素中,而非使用 `in_array()` 进行精确匹配,并提供可复用的函数及实用示例。
在 PHP 开发中,常遇到这样的需求:给定一个字符串(如 "wor"),需要判断它是否作为子串出现在数组某个元素中(例如 "world"),而不是要求整个数组元素与该字符串完全相等。此时,in_array() 无法满足需求,因为它仅支持全值匹配。
正确做法是遍历数组,对每个元素调用 strpos()(区分大小写)或 stripos()(忽略大小写)进行子串搜索。以下是一个简洁、健壮的封装函数:
function containsSubstringInArray(array $array, string $substring): bool {
foreach ($array as $item) {
if (is_string($item) && strpos($item, $substring) !== false) {
return true;
}
}
return false;
}
// 使用示例
$array = ["hello", "world", "!"];
$string = "wor";
if (cont
ainsSubstringInArray($array, $string)) {
echo "match";
} else {
echo "not match"; // 此行不会执行
}✅ 优势说明:
⚠️ 注意事项:
总结:子串搜索 ≠ 元素相等。掌握 strpos() + 循环是 PHP 字符串模糊匹配的基础范式,合理封装后既安全又高效。