我有一个大文本文件,有字符串和数字 以这种格式:
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);
答案 0 :(得分:1)
双倍值大于 0.1
的行
使用file
和preg_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
的浮点数。