我正在尝试查找单词数组中是否存在数组中的任何字符串。
例如:
$key = ["sun","clouds"];
$results = ["Sun is hot","Too many clouds"];
如果$key
中存在$results
中的任何一个,则返回true
使用以下脚本,我可以得到想要的结果,但前提是$results
中的单词与$key
中的单词完全一样。
function contain($key = [], $results){
$record_found = false;
if(is_array($results)){
// Loop through array
foreach ($results as $result) {
$found = preg_match_all("/\b(?:" .join($key, '|'). ")\b/i", $result, $matches);
if ($found) {
$record_found = true;
}
}
} else {
// Scan string to find word
$found = preg_match_all("/\b(?:" .join($key, '|'). ")\b/i", $results, $matches);
if ($found) {
$record_found = true;
}
}
return $record_found;
}
如果$results
中的单词是Enjoy all year round **sunshine**
,则我的函数返回false
,因为找不到单词sun。如果字符串包含该字符串作为单词的一部分,如何更改函数以返回true?
我希望单词sun
与sun
或sunshine
都匹配。
TIA
答案 0 :(得分:1)
因此,您可以从here支票 而不是用正则表达式在循环中使用它+ mb_strtolower:
<?php
$keys = ["sun","clouds"];
$results = ["Sun is hot","Too many clouds"];
foreach ($keys as $key) {
foreach ($results as $result) {
if (strpos(mb_strtolower($result), mb_strtolower($key)) !== false) {
return true;
}
}
}
return false;