0

このファイルがあり、各「ROBxx」のインスタンス数をカウントしたいと考えています。ファイルには数千行を含めることができます。トラフをループしてカウントする最も簡単な方法は何ですか?

2012.05.08 11:15:49 ROB52 4mm

2012.05.08 11:15:56 ROB42 5ミリ

2012.05.08 11:15:59 ROB30 4mm

2012.05.08 11:16:01 ROB52 4mm

2012.05.08 11:16:04 ROB42 2ミリ

2012.05.08 11:16:05 ROB06 4mm

2012.05.08 11:16:06 ROB52 4mm

2012.05.08 11:16:10 ROB52 4mm

2012.05.08 11:16:11 ROB30 3mm

カウント後のこのファイルの結果は次のようになります。

ROB52: 4

ROB42: 2

ROB30: 2

ROB06: 1

ありがとう!

4

3 に答える 3

1
$handle = fopen("input.txt", "r");
$hash = array();
if ($handle) {
        while (($buffer = fgets($handle)) !== false) {
                if(preg_match('/\b(ROB\d+)\b/',$buffer,$m)) {
                        $hash[$m[1]] = (isset($hash[$m[1]])?($hash[$m[1]]+1):1);
                }
        }
        foreach($hash as $k=>$v) {
                print "$k : $v\n";
        }
} else {
        // error openeing file.
}
于 2012-05-10T06:34:59.523 に答える
0

まず、文字列と整数を使用して 2 次元配列 (またはリストなど) を作成します。これで、各行をループして次の操作を実行できます。

「ROBxx」文字列を切り取り、文字列として保存します。

文字列の 2 次元配列を確認します。見つかった場合は、カウントを増やします。まだ配列にない場合は、追加してカウントを 1 に設定します。

お役に立てれば。

于 2012-05-10T06:33:38.900 に答える
0
$string = file_get_contents(filename)
$count = preg_match_all('/ROB[0-9]{2}/', $string, $aMatches);
于 2012-05-10T06:33:51.457 に答える