我正在尝试搜索字符串中某些单词的出现,并将它们与数组中的短列表进行匹配。我将通过一个例子来解释我的问题。
$arrTitle = explode(" ", "Suburban Apartments");
foreach( $arrTitle as $key => $value){
echo "Name: $key, Age: $value <br />";
$words = array("hotel", "apart", "hostel");
if (in_array($value, $words)) {
echo "Exists";
}
}
我想比较一下字符串的一部分,在上面的例子'Apartments'中与$ words数组比较字符串'Apart'ments的出现。 我希望这是有道理的。这有可能吗?
由于
答案 0 :(得分:5)
然后你必须改变你的代码。请看下面的内容:
$arrTitle = explode(" ", "Suburban Apartments");
foreach( $arrTitle as $key => $value){
echo "Name: $key, Age: $value <br />";
$words = array("hotel", "apart", "hostel");
foreach($words as $word){
if (stripos($value, $word) !== false) {
echo "Exists";
}
}
}
请注意在搜索字词和strpos的in_array替换上添加的foreach。
对于您的个人信息,in_array会检查$ word是否在数组中作为整数值,这不是您想要的。您需要使用strpos或stripos检查每个单词是否存在(不区分大小写)...
答案 1 :(得分:1)
使用正则表达式匹配文本。
http://php.net/manual/en/function.preg-match.php
您需要逐个循环浏览每个搜索到的数组值,这样您就必须在循环内循环并在每个循环中运行正则表达式以寻找匹配项。
确保使它们不区分大小写。