我有一个文件作为数组 '行号'=> '它的内容'; 现在我需要一种方法来删除只包含数字的行(没有字母或特殊字符) 我按行的长度做了,但这种方法不合适,因为它可能会删除一些内容
RBP+0
is_numric不起作用我认为因为数字之前有一个空格
答案 0 :(得分:1)
请试试这个
$keys=array_filter(array_keys($array1), "is_numeric");
$out =array_diff_key($array1,array_flip($keys));
print_r($out);
答案 1 :(得分:1)
答案 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
即可修改正则表达式模式,并且只能匹配数字