如何过滤仅包含数字的数组值

时间:2017-06-14 06:10:09

标签: php

我有一个文件作为数组 '行号'=> '它的内容'; 现在我需要一种方法来删除只包含数字的行(没有字母或特殊字符) 我按行的长度做了,但这种方法不合适,因为它可能会删除一些内容

RBP+0

is_numric不起作用我认为因为数字之前有一个空格

4 个答案:

答案 0 :(得分:1)

请试试这个

$keys=array_filter(array_keys($array1), "is_numeric");
$out =array_diff_key($array1,array_flip($keys));
print_r($out);

答案 1 :(得分:1)

试试这个:

$pattern = '/^[0-9 ]+$/';

if ( !preg_match ($pattern, $text) )
{
    echo 'allowed';
}

来自here

答案 2 :(得分:1)

我修改了第二行。我不明白为什么$ length> 5,它应该是$ length> 0

strlen(trim((string)$text[0][$i]));

for($i=0; $i<=($linecount*2)-4;$i++) {
$length = strlen(trim((string)$text[0][$i]));
if ($length >0) 
   {
       echo ($text[0][$i] .'</br>');
   }

}

答案 3 :(得分:1)

由于没有给出示例数据,我根据描述给出了假定数据输入的答案 - 它可能与实际数据没有相似之处。

我使用的输入文件包含以下数据行 - 字符和数字的混合

abc23
123
89
gh46m
12 34 56


$file='c:/temp/src.txt';

$lines=array_filter( file( $file ), function( $item ){
    $pttn='@^[0-9\s]{1,}$@';
    preg_match( $pttn, $item ,$matches );
    return count( $matches ) > 0 ? true : false;
});

echo '<pre>',print_r($lines,true),'</pre>';

这输出以下内容:

Array
(
    [1] => 123

    [2] => 89

    [4] => 12 34 56
)

如果space计为特殊字符,则只需删除\s即可修改正则表达式模式,并且只能匹配数字