次のように preg_match を使用しています。
ケース 1: パターンには 2 つの単語があります。preg-match ソリューションを使用すると、2 つの結果が返されます。
ケース 2: パターンには 3 つの単語があります。preg-match ソリューションを使用すると、2 つの結果が返されます。
私の意見では、ケース 2 は 1 つの結果のみを返します。しかし、私は何のアプローチもしていません。
私は否定で試しました-パターンもそうです
$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] )
私の例で 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"
1 つの結果が得られる入力ソリューションはどれですか?
入力を伴うどのソリューション: 「ジムが行く」は、たとえば、「ジム・キャリーがサンタ句に夢中になる」という 1 つの結果を生成します。これは、正規表現の and 条件を意味しますが、可能ですか?
解決:
$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|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"
}