Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php只允许数字数据和逗号,删除重复的逗号_Php_Preg Replace_Replace - Fatal编程技术网

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

php只允许数字数据和逗号,删除重复的逗号,php,preg-replace,replace,Php,Preg Replace,Replace,我有一个脚本,我正在为一个自动化任务工作,所以我并不真正担心干净的代码,因为它无论如何只会被使用一次 该脚本读取平面文件并将信息存储到一个数组中,该数组稍后将用于从数据库中读取内容 但是,我只需要数字数据,所以我使用了preg_replace()和逗号。我的代码如下 这些是使用循环从平面文件中的值读取的 $store = array(); $store[] = 111; $store[] = 2; $store[] = 4; $store[] = 55; $store[] = 66; $stor

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

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

但是,我只需要数字数据,所以我使用了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()语句中使用这些信息,它会向我抛出一个错误,因为两个逗号相邻。删除相邻副本的最佳方法是什么


谢谢大家!

重复逗号,包括标题和尾随逗号,您可以使用
$string=trim(preg#u replace(“#,{2,}#,”,“,”,$string),“,”)删除它们

重复逗号,包括标题和尾随逗号,您可以使用
$string=trim(preg#u replace(“#,{2,}#,”,“,”,$string),“,”)删除它们

当循环通过
存储[]
值时,使用
is\u numeric()
函数检查值是否为数值。如果是,则添加逗号;如果不是,则不添加逗号


当循环通过
存储[]
值时,使用
is\u numeric()
函数检查值是否为数值。如果是,则添加逗号;如果不是,则不添加逗号


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);

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);

…如果有3个逗号呢?他是递归地说的。如果你有三个逗号,并且你使用了它的函数,那么剩下的两个…在下一次传递时会变成一个。修正了,抱歉。(但他只谈到了双精度,而不是三精度)@SébastienRenauld不:递归是错误的,我只是自己测试了一下(我的错误)。我把它改为preg_replace。@bwoebi+1现在可以处理多个逗号:)…如果有3个逗号?他递归地说。如果你有三个逗号,并且你使用了它的函数,那么剩下的两个…在下一次传递时会变成一个。修正了,抱歉。(但他只谈到了双精度,而不是三精度)@SébastienRenauld不:递归是错误的,我只是自己测试了一下(我的错误)。我已将其更改为preg_replace。@bwoebi+1现在可用于多个逗号:)错误
is_nan()
检查
==nan
。你的意思是
是数值()
。错了
is_nan()
检查
==nan
。您的意思是,
is\u numeric()
+1无疑是一种更好的方法,但对于小数点和部分数值来说,却不是这样:)您始终可以用另一个更适合当前用例的方法替换“is\u numeric”回调。+1无疑是一种更好的方法,但是对于例如小数点和部分数字值,并不是完全一样的:)您总是可以用另一个更适合当前用例的回调替换“is_numeric”回调。