我使用 preg_match 如下:
案例1:pattern有两个词。使用 preg-match 解决方案 - 它返回两个结果。
案例 2:pattern 有 3 个单词。使用 preg-match 解决方案 - 它返回两个结果。
在我看来,案例 2 只会返回一个结果。但我没有任何办法。
我尝试否定 - 模式也是如此
$pattern="^(^Jim|^goes|^with)"; )
或者
$pattern="(Jim|goes|with){1}"
出错或
$pattern="(Jim){1}(with){1}"
出错
解释:
$pattern1="(Jim|goes|with)";
$_search[0]="Jim Carrey goes crazy";
$_search[1]="Jim Carrey goes crazy with santa clause";
preg_match("/$pattern1/is",$_search[0] )
preg_match("/$pattern1/is",$_search[1] )
在我的示例中,是否有可能获得一个结果的 and 作为模式?
谢谢 - 我希望它
编辑:输入(i)-输出(o)示例(e)
e1 i: (Jim){1}(goes){1}(with){1}
e1 o: no result
e2 i: (Jim|goes|with)
e2 o: two matches "Jim Carrey goes crazy" and "Jim Carrey goes crazy with santa clause"
e3 i: ^(^Jim|^goes|^with)
e3 o: two matches "Jim Carrey goes crazy" and "Jim Carrey goes crazy with santa clause"
哪个输入解决方案带有一个结果?
哪个带有输入的解决方案:“Jim goes with”会生成一个结果,例如:“Jim Carrey got crazy with santa Clause”它表示正则表达式中的一个和条件 - 但有可能吗?
解决方案:
$patternsearch=chop("Jim goes with ");
if(preg_match('/ /',$patternsearch)){
$_array_pattern = explode( ' ', $patternsearch );
$text = preg_replace('/ /','|',$patternsearch);
$pattern1=''.'('.$text.')';
}else
{
$pattern1 = $patternsearch;
}
echo "my search is as follow: $patternsearch"."</br>";
echo "my pattern is as follow: $pattern1"."</br></br>";
foreach($_search as $search){
$andcounter= preg_match_all("/$pattern1/isx", $search,$matscha);
echo "preg_match count: $andcounter =";
echo "search count : ".count($_array_pattern)."</br></br>";
if(count($_array_pattern) === $andcounter ){
$item[]=$search;
}
}
echo "<pre>";
var_dump($item);
echo "</pre>" ;
输出:
我的搜索如下: Jim 与
我的模式如下:(Jim|goes|with)
preg_match 计数:2 =搜索计数:3
preg_match 计数:3 =搜索计数:3
array(1) {
[0] =>
string(39) "Jim Carrey goes crazy with santa clause"
}
与:
$patternsearch="Jim goes ";
我的搜索如下:吉姆去了
我的模式如下:(Jim|goes)
preg_match 计数:2 =搜索计数:2
preg_match 计数:2 =搜索计数:2
array(2) {
[0] =>
string(21) "Jim Carrey goes crazy"
[1] =>
string(39) "Jim Carrey goes crazy with santa clause"
}