- 更新 - これは、キーワードをチェックして絞り込みました。キーワードは、配列にハードコードされている場合、キーワード間のスペースにのみ一致します。スペースを含むキーワードが配列に配置されている場合は、データベースからの結果であり、preg_match_allは失敗し、結果は0になります。preg_match_allはmysqlデータベースの結果変数で動作しませんか?
だから私は、配列を作成するには、この操作を行う場合preg_match_allは段階が、 の両方がありますtexttoscanに対してそれをチェックし
$myarray = array("This is my Phrase","This is my Second Phrase");
のようなIハードコードPHPの配列の場合と:
$result1 = mysql_result($result,$i,"firstphrase");
$result2 = mysql_result($result,$i,"secondphrase");
$myarray = array($result1,$result2);
以下のpreg_match_allは失敗し、フレーズを見つけることはできませんが、フレーズではなく1つの単語で配列を設定すると動作します。だから私は、データベースから返されるスペースを含む文字列を準備する必要があると仮定しますが、私は正規表現パターンを再フォーマットする必要がありますか、それを行う方法を正確にはわかりませんか?
foreach ($myarray as $K) {
$pattern = "/\b($K)\b/";
$count = preg_match_all($pattern, $texttoscan, $matches);
if($count > 0){ echo "matched"; }
}
これはエンコードの問題のような匂いがします。 'strlen($ texttoscan)'は、あなたが期待していた、あるいはそれよりも奇妙な結果でしたか?また、あなたのPHPソースはどのエンコーディングに保存されていますか? – Jon