📅  最后修改于: 2023-12-03 15:18:31.492000             🧑  作者: Mango
当需要检查某个字符串是否包含来自一个数组中的值时,PHP提供了多种解决方案。以下是其中三种方法的示例代码。
in_array()
函数可以检查指定值是否存在于数组中。我们可以遍历要检查的字符串,并对每个字符串使用in_array()
函数进行检查。
$stringsToCheck = array("hello", "world"); // 要检查的字符串数组
$stringsToMatch = array("he", "orl"); // 要匹配的字符串数组
foreach ($stringsToCheck as $string) {
$found = false;
foreach ($stringsToMatch as $match) {
if (strpos($string, $match) !== false) {
$found = true;
break;
}
}
if ($found) {
echo "String \"$string\" contains match from array" . PHP_EOL;
}
}
上述示例使用了strpos()
函数来检查字符串是否包含匹配的子字符串,如果匹配则将$found
变量设置为true并跳出内部循环。如果最终$found仍然是true,则表示该字符串中包含来自要匹配的字符串数组中的一个匹配项。
在PHP中,我们也可以使用正则表达式来检查字符串是否包含来自数组中的任何值。下面是一个示例,使用preg_match()
函数,该函数用于将正则表达式与字符串进行匹配。
$stringsToCheck = array("hello", "world"); // 要检查的字符串数组
$stringsToMatch = array("he", "orl"); // 要匹配的字符串数组
foreach ($stringsToCheck as $string) {
$matchFound = false;
foreach ($stringsToMatch as $match) {
if (preg_match("/$match/", $string)) {
$matchFound = true;
break;
}
}
if ($matchFound) {
echo "String \"$string\" contains match from array" . PHP_EOL;
}
}
上述示例使用了preg_match()
函数来将匹配的模式应用于要检查的字符串,如果模式与字符串匹配,则将$matchFound
变量设置为true,并跳出循环。如果最终$matchFound
仍然是true,则表示该字符串中包含来自要匹配的字符串数组中的一个匹配项。
我们可以使用array_filter()
来过滤一个数组,并返回只包含符合条件的元素的新数组。
$stringsToCheck = array("hello", "world"); // 要检查的字符串数组
$stringsToMatch = array("he", "orl"); // 要匹配的字符串数组
foreach ($stringsToCheck as $string) {
$matches = array_filter($stringsToMatch, function ($match) use ($string) {
return (strpos($string, $match) !== false);
});
if (count($matches) > 0) {
echo "String \"$string\" contains match from array" . PHP_EOL;
}
}
上述示例使用了一个匿名函数来过滤要匹配的字符串数组,该函数使用strpos()
函数来检查每个字符串是否与要检查的字符串匹配。如果结果数组(即$matches
)中有任何元素,则表示该字符串中包含来自要匹配的字符串数组中的一个匹配项。
无论您选择哪种方法,上述所有示例都可以让您检查一个字符串是否包含来自一个数组中的值。根据您的代码和数据,一种方法可能比另一种方法更适合。