如何在单个字符串中搜索 2 个或多个匹配项?
How to search for 2 or more matches in a single string?
我想搜索两个或更多的词,但找不到准确的词。
如果我使用 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 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;
}
}
注意:- 用所有可能的测试用例检查它,让我们知道,是否有效?
这利用一些智能数组函数来保持代码块简洁并避免手动递增计数器:
代码:(Demo)
$input_string="abc india ltd";
$input_array=explode(' ',$input_string);
$search_array=array('xyz ab','abc india','ltd abc','yz lmn');
foreach($search_array as $search_string){
if(sizeof(array_intersect($input_array,explode(' ',$search_string)))>1){
echo "More than one word in $search_string was found in $input_string\n";
}
}
输出:
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()
的别名。
我想搜索两个或更多的词,但找不到准确的词。
如果我使用 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 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;
}
}
注意:- 用所有可能的测试用例检查它,让我们知道,是否有效?
这利用一些智能数组函数来保持代码块简洁并避免手动递增计数器:
代码:(Demo)
$input_string="abc india ltd";
$input_array=explode(' ',$input_string);
$search_array=array('xyz ab','abc india','ltd abc','yz lmn');
foreach($search_array as $search_string){
if(sizeof(array_intersect($input_array,explode(' ',$search_string)))>1){
echo "More than one word in $search_string was found in $input_string\n";
}
}
输出:
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()
的别名。