从文本文件中获取数值大于0.1的每一行

时间:2017-05-21 18:26:16

标签: php

我有一个大文本文件,有字符串和数字 以这种格式:

firstname 0.6 2  lastname
firstname 0.6 2.25  lastname
firstname 0.000 0.0002  lastname

我想只复制大于0.1的double值的行 在那个例子中,我会复制两行:

firstname 0.6 2  lastname
firstname 0.6 2.25  lastname

并将其保存在文件中。我尝试使用filter_var函数但我无法提取它们。

$c = filter_var($str, FILTER_SANITIZE_NUMBER_INT);

1 个答案:

答案 0 :(得分:1)

  

双倍值大于 0.1

的行

使用filepreg_grep(仅过滤匹配行)功能的解决方案:

$lines = file("yourfile.txt", FILE_IGNORE_NEW_LINES);
$result = preg_grep('/.*\b(0\.[2-9][0-9]*|[1-9][0-9]*\.[0-9]+)\b.*/', $lines);

print_r($result);

输出(用于测试输入片段):

Array
(
    [0] => firstname 0.6 2  lastname
    [1] => firstname 0.6 2.25  lastname
)
  • .* - 匹配任何字符

  • (0\.[2-9][0-9]*|[1-9][0-9]*\.[0-9]+) - 确保该行包含大于0.1的浮点数。