检查变量是否为CSV字符串中的值

时间:2011-12-29 17:19:49

标签: php regex csv

编辑:不寻找任何人为我编写代码,只是寻找建议以哪种方式最好地实现我正在尝试做的事情。

我可以想到几种方法,但我只是想知道是否有更优雅的方式。

例如,我想知道“abc”是否在“cat,dog,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.

任何有关更好方法的智慧言论,Stack Overflow?

2 个答案:

答案 0 :(得分:2)

正如杰森所说,你的头衔似乎有点不对劲。但是......这是你给出的例子(仅限5.3+):

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

检查行$value中的任何列的值是否恰好是$key的值

答案 1 :(得分:2)

第一种方法可能是最可靠/最准确,最容易阅读/理解的方法。但是,您应该使用str_getcsv()而不是explode(),因为逗号可以位于以逗号分隔的数据中。它崩溃的例子:

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

另外两种方法容易出错,并且有边缘情况会导致误报。他们非常不可靠。