2011-12-29 13 views
0

編集:私のためにコードを書く人を探しているわけではありません。変数がCSV文字列内の値であるかどうかを調べる

私はこれを行ういくつかの方法を考えることができますが、よりエレガントな方法があるかどうかは疑問でした。

例えば、私は "ABC" は "猫、犬、ABC、XYZ" であるかどうかを知りたい

これらは私が...前に

in_array($key, explode(',', $value)); 

(strpos($value, ','.$key) !=== FALSE) || (strpos($value, $key.',') !=== FALSE); 

preg_match('/(\,'.$key.'|'.$key.'\,)/', $value) !== 0 // Untested, but.. just for the general idea. 

どれをそれをやった方法です良い方法のための知恵の言葉、スタックオーバーフロー?

+2

詳細情報を提供します。あなたの質問のタイトルは間違っているようです。 –

+0

質問は何ですか? –

+0

@JasonMcCreary私は少し質問のタイトルと本文を編集しました。ミックスアップに申し訳ありません - これはまったく別の質問から始まりました。私はこの質問につながりました。 –

答えて

2

最初のメソッドとまったく同じ値である場合には、このチェック

in_array($key, str_getcsv($value)); 

:しかし...これは、あなたが与えてくれた例にparellel(5.3+のみ)ですおそらく最も信頼できる/正確で、読みやすい/理解しやすいでしょう。ただし、カンマ区切りのデータの中にカンマがある可能性があるので、explode()の代わりにstr_getcsv()を使用する必要があります。他の2つの方法は誤りがちであり、偽陽性の原因となるエッジケースを持っています。彼らは非常に信頼できません。

2

Jasonの言葉通り、あなたのタイトルは少し間違っているようです。行$valueのいずれかのカラムの値が$key

+1

+1は 'str_getcsv()'を参照します。 –

関連する問題