php仅允许数字数据和逗号,删除重复的逗号

时间:2013-04-10 15:41:51

标签: php preg-replace replace

我有一个脚本,我正在为自动化任务工作,所以我并不担心干净的代码,因为它只会被使用一次。

脚本读取平面文件并将信息存储到一个数组中,该数组稍后将用于从数据库中读取内容。

但是,我只想要数字数据,所以我使用了preg_replace()和逗号。我的代码如下。

使用循环从平面文件中的值读取它们。

$store = array();
$store[] = 111;
$store[] = 2;
$store[] = 4;
$store[] = 55;
$store[] = 66;
$store[] = 'Kilory';
$store[] = 9090;

$theList[$i] = preg_replace( '/[^0-9,]/u', '', implode( ',', $store ) );
unset( $store );

这给我的结果是0,2,4,55,66,9090。如果我试图在mysql IN()语句中使用该信息,那么由于彼此旁边有两个逗号,它会向我吐出一个错误。删除彼此重复的最佳方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:3)

重复的逗号,包括您​​可以使用$string = trim(preg_replace('#,{2,}#', ',', $string), ',');删除的标题和尾随逗号。

答案 1 :(得分:1)

PHP为此提供了一个过滤功能:

$store = array();
$store[] = 111;
$store[] = 2;
$store[] = 4;
$store[] = 55;
$store[] = 66;
$store[] = 'Kilory';
$store[] = 9090;

$theList[$i] = implode(',', array_filter($store, 'is_numeric'));
unset($store);

答案 2 :(得分:0)

循环遍历store[]值时,使用is_numeric()函数检查值是否为数字。如果是,请添加逗号,如果不是,请不要。

manual