2017-05-21 23 views
0

から0.1よりも多い数の値を持つすべての行は、この形式で文字列や数値 を持って取得します。私は大きなテキストファイルの魔女を持っているテキストファイル

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

私は二重の値を持つ行だけをコピーしたいです

firstname 0.6 2 lastname 
firstname 0.6 2.25 lastname 

し、ファイルに保存します。私は2つの行をコピーすることを例より大きい0.1 です。私はfilter_var機能を使用してみましたが、私はそれらを抽出できませんでした。

$c = filter_var($str, FILTER_SANITIZE_NUMBER_INT); 
+0

あなたが作成したコードを表示します。 1行でコードをデバッグするのに十分ではありません – RiggsFolly

答えて

1

(のみ一致する行をフィルタリングする)filepreg_grepを用い0.1

より大きい二重値を有する行溶液関数:

$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より大きいフロート番号が含まれていることを保証します。

関連する問題