2012-04-03 24 views
1

私はそれに項目番号(1行に1つ)を持つテキストファイルを持っています。アイテムが私たちのバーコードスキャナーでスキャンされると、それはこのテキストファイルに配置されます(配列内に格納されています...アイテム番号のみ、それ以外は何もありません)。PHP配列の正確な文字列に一致する助けが必要

C0DB-9700-W C0DB-9700-WP

私はその後、私がスキャンできる最初C0DB-9700-W項目をスキャンする場合:

何が起こっていることは私は2つの項目番号を持っている場合ということです2番目の項目は問題ありませんが、最初にC0DB-9700-WPをスキャンすると、既にスキャンした項目のプレフィックスであるため、既にC0DB-9700-Wをスキャンしたと考えられます。

私はstrposが最初のオカレンスだけをチェックすることを知っています。私は、次のコードを使用していました:

if (strpos($file_array, $submitted) !==FALSE) {

は、私が使用してに切り替え:

if (preg_match('/'.$submitted.'/', $file_array)) {

は私がするpreg_matchを使用して、私はこの問題を克服することができると思ったが、どうやらありません。私はちょうどそれが既にスキャンされているかどうかを確認するために配列(私はファイルから取得しています)の項目に対してそれを与えるEXACT文字列をPHPがチェックするようにします。これは私の心の中では難しいことではありませんが、明らかに私はここで何かを逃しています。どのようにすれば、文字列全体を検索し、十分に良いものが見つかると(または少なくともそれが十分だと思うものが)見つかるとPHPを同軸にすることができますか?

ありがとうございます!

+0

preg_match_allを試しましたか? – mamadrood

答えて

3

何もありません不正確C0DB-9700-WPは、C0DB-9700-Wに一致します。それは、あなたの例であるが

if (in_array($submitted, $file_array)) { 
    // Do something... 
} 

$file_array項目の配列について

if (preg_match('/\\b'.$submitted.'\\b/', $file_array)) { 
+0

これはまさに私が探していたものです!魅力的な作品!ありがとうございました!! –

4

だけin_arrayを使用します。

if (in_array($submitted, $file_array)) 

FYI、あなたの正規表現は、開始/終了アンカーを欠落していた(第二引数は文字列ではなく配列であることが必要):

preg_match('/^'.$submitted.'$/', $subject) 
1

:あなたが探していることはあなたがしたい文字列を確実に正規表現はそれ自体で全体の単語でありますあなたの$file_arrayが文字列であるように見えます。

$file_array = explode("\n", $file_array); 
関連する問題