[英]Matching wildcard arrays in PHP - WordPress
PHP代码:
$search = "Who is KMichaele test";
$array = ["john","michael","adam"];
if (in_array($search, $array)) {
echo "success";
}
else
echo "fail";
我想要成功输出。 这怎么可能?
您可以使用array_reduce
和stripos
检查$array
所有值,以查看它们是否以不区分大小写的方式出现在$search
中:
$search = "Who is KMichaele test";
$array = ["john","michael","adam"];
if (array_reduce($array,
function ($c, $i) use ($search) {
return $c || (stripos($search, $i) !== false);
},
false))
echo "success";
else
echo "fail";
输出:
success
编辑
由于这可能更有用包装在一个函数中,这里是如何做到这一点:
$search = "Who is KMichaele test";
$array = ["john","michael","adam"];
function search($array, $search) {
return array_reduce($array,
function ($c, $i) use ($search) {
return $c || (stripos($search, $i) !== false);
},
false);
}
if (search($array, $search))
echo "success";
else
echo "fail";
$search2 = "michael";
if (search($array, $search2))
echo "success";
else
echo "fail";
输出
success
success
这是一个in_array
-esque 函数,它将忽略大小写并在匹配早期保释:
function search_array($search, $arr) {
foreach ($arr as $item) {
if (stripos($search, $item) !== false) {
return 1;
}
}
return 0;
}
$search = "Who is KMichaele test";
$array = ["john", "michael", "adam"];
if (search_array($search, $array)) {
echo "success\n";
}
else {
echo "fail\n";
}
success
你可以用一个简单的 regx 来做到这一点
$search = "Who is KMichaele test";
$array = ["john","michael","adam"];
$regex = '/\b('.implode('|', $array).')\b/i';
///\b(john|michael|adam)\b/i
$success = preg_match($regex, $search);
正则表达式很简单
| 或者
标志 \\i,不区分大小写
基本匹配列表中的任何单词。
例如,通过使用边界,单词michael
将不匹配kmichael
。 如果您想要部分单词匹配,只需删除那些。
没有边界的沙盒
如果您包含第三个参数
$success = preg_match($regex, $search,$match);
你可以说出比赛是什么。 最后但同样重要的是,您可以将其减少到一行
$success = preg_match('/\b('.implode('|', $array).')\b/i', $search);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.