Php 如何在单个字符串中搜索2个或多个匹配项?
我想搜索两个或多个单词,但无法匹配确切的单词 如果我使用其他一些函数,比如stripos,我就无法获得所需的输出Php 如何在单个字符串中搜索2个或多个匹配项?,php,string-comparison,string-matching,Php,String Comparison,String Matching,我想搜索两个或多个单词,但无法匹配确切的单词 如果我使用其他一些函数,比如stripos,我就无法获得所需的输出 $string = "abc india ltd"; $Arr = array('xyz ab','abc india', 'pqr', 'yz lmn'); $Arr = implode('',$Arr); if (preg_match_all("/$string/", $Arr)) { echo '<b>'.'found'.'<font colo
$string = "abc india ltd";
$Arr = array('xyz ab','abc india', 'pqr', 'yz lmn');
$Arr = implode('',$Arr);
if (preg_match_all("/$string/", $Arr)) {
echo '<b>'.'found'.'<font color="green">'.$string.'</font>'.'</b>';
}
或者两者相同,但要避免在循环内使用
$string = "abc india ltd";
$Arr = array('xyz ab','abc india', 'pqr', 'yz lmn');
foreach ($Arr as $value) {
if (preg_match_all("/$string/", $value)) {
echo '<b>'.'found '.'<font color="green">'.$string.'</font>'.'</b>';
}
}
我想你想要这样:-
<?php
$string = "abc india";
$Arr = array('xyz india','abc india', 'pqr', 'yz lmn',"xyz abc india");
foreach($Arr as $val){
$explode_string = explode(" ",$string);
$counter =0;
foreach($explode_string as $explode_str){
if(strpos($val,$explode_str) !== FALSE){
$counter +=1;
}
}
if($counter>=2){
echo $val. " have exact ".$counter. " word matches";
echo PHP_EOL;
}
}
输出:-
注意:-请使用所有可能的测试用例检查它,并告诉我们是否工作?这利用了一些智能阵列函数来保持代码块简洁,并避免手动增加计数器: 代码: 输出:
More than one word in abc india was found in abc india ltd
More than one word in ltd abc was found in abc india ltd
*注意,array_intersect生成一个新数组,该数组只包含两个提供的数组中存在的元素。sizeof是count的别名。请详细说明您实际想要什么。基于此输入数据,您想要的结果是什么。如果数组中有两个确切的单词,我应该找到输出。但是没有一个单词匹配,例如xyz india不应该匹配Yabes Nadar请检查我下面的答案,并用所有可能的案例进行测试,如果它对所有案例都有效,则将其标记并投票作为一个可接受的答案。谢谢你错放了preg_match_all函数的参数。第一个是regex,将$string放入模式中,然后输入$value,第三个是结果数组var。可能还有更多,但这些是最重要的。如果您有$string=abc,india ltd;公认的解决方案行不通。
More than one word in abc india was found in abc india ltd
More than one word in ltd abc was found in abc india ltd