0

文字列のコレクション内の文字列をチェックするPHPコードがあります。私のコードは次のようなものです:

$string = '01122028K,02122028K,03122028M-1';
$search = '03122029M'
echo preg_match('/\b' . $search . '\b/', $string);

TRUEを返します...

正規表現を使用して FALSE を返すにはどうすればよいですか。変数 $search の文字列が変数 $string で実際に一致する場合にのみ TRUE を返したいので、$search = "03122029M" は FALSE を返します $search = "03122029M-1 " は TRUE を返します

ありがとうございました

4

4 に答える 4

1

正規表現を使用しないでください。

echo in_array($search, explode(',', $string));
于 2013-03-13T17:24:53.203 に答える
0

ここでは正規表現は本当に必要ないと思います。さらに、あなたはまた、逃げる悪夢に自分自身を開放するでしょう。

の開始と終了にコンマを追加すると、コンマでラップすることにより$string、全体$searchを単一のエンティティとして一致させることができます。

echo (strpos(',' . $string . ',', ',' . $search . ',') !== FALSE)
于 2013-03-13T17:20:16.197 に答える
0

\ bには、一致するものに-が含まれます。代わりに、特にコンマで一致させてください。これは、文字列の最初と最後にコンマを追加するだけで実行できます。

$string = '01122028K,02122028K,03122028M-1';
$string = ','.$string.','
$search = '03122029M'
echo preg_match('/,' . $search . ',/', $string);
于 2013-03-13T17:20:28.853 に答える
0

\b問題は、使用している境界スピレーターにあります: -.

代わりに、文字クラスを使用して、空白とカンマで区切ることができます。また、行末のケースをキャッチするために、行頭と行頭をテストに含めます。

preg_match('/(^|[\s,])' . $search . '([\s,]|$)/', $string);
于 2013-03-13T17:18:31.990 に答える