首先,我想告诉我,我需要的是in_array PHP函数的反向.
我需要搜索字符串中的所有数组项,如果发现其中任何一项,函数将返回true,否则返回false.
我需要这个问题的最快解决方案,当然这可以通过迭代数组并使用strpos函数来成功.
欢迎任何建议.
示例数据:
$string = 'Alice goes to school every day';
$searchWords = array('basket','school','tree');
Run Code Online (Sandbox Code Playgroud)
返回true
$string = 'Alice goes to school every day';
$searchWords = array('basket','cat','tree');
Run Code Online (Sandbox Code Playgroud)
返回false
mal*_*lko 10
你应该尝试使用preg_match:
if (preg_match('/' . implode('|', $searchWords) . '/', $string)) return true;
Run Code Online (Sandbox Code Playgroud)
经过一些评论后,一个正确的转义解决方案:
function contains($string, Array $search, $caseInsensitive = false) {
$exp = '/'
. implode('|', array_map('preg_quote', $search))
. ($caseInsensitive ? '/i' : '/');
return preg_match($exp, $string) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)