2011-12-29 81 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

提供更多信息。你的問題標題看起來不對。 – 2011-12-29 17:22:55

+0

問題是什麼? – 2011-12-29 17:25:36

+0

@JasonMcCreary我已經編輯了問題的標題和正文。混淆抱歉 - 這開始是一個完全不同的問題,我回答了自己,導致了這個問題,當我編輯問題以尋求不同的東西時,情況變得混亂起來。 – 2011-12-29 17:46:02

回答

2

第一種方法完全相同的值可能是最可靠/最準確,最容易閱讀/理解的。但是,您應該使用str_getcsv()而不是explode(),因爲逗號可能位於逗號分隔的數據中。例如其中分解:

$key = 'uh, oh'; 
$value = 'foo,"uh, oh",bar'; 

其它兩種方法是容易出錯的,並且具有邊緣的情況下引起的假陽性。他們非常不可靠。

2

正如傑森所說,你的標題似乎有點不對。但是......這是中並行於你給的例子(5.3+只):

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

此檢查是否有任何列的行$value價值是$key

+1

用於引用'str_getcsv()' – 2011-12-29 18:05:05

相關問題