0

ログファイルを解析しようとしていますが、そのような文字列をどのように変換できるのか疑問に思っています:

[5189192e][game]: kill killer='0:Tee' victim='1:nameless tee' weapon=5 special=0

ある種の配列に:

$log['5189192e']['game']['killer'] = '0:Tee';
$log['5189192e']['game']['victim'] = '1:nameless tee';
$log['5189192e']['game']['weapon'] = '5';
$log['5189192e']['game']['special'] = '0';
4

3 に答える 3

0

間違いなく正規表現が必要です。関連する PHP 関数は次のとおりです。正規表現構文のリファレンスは次のとおりです。

于 2013-05-08T12:34:09.270 に答える
0

関数preg_match_all()正規表現を使用すると、配列を生成できます。これを多次元配列に編成するだけです。

コードは次のとおりです。

$log_string = "[5189192e][game]: kill killer='0:Tee' victim='1:nameless tee' weapon=5 special=0";
preg_match_all("/^\[([0-9a-z]*)\]\[([a-z]*)\]: kill (.*)='(.*)' (.*)='(.*)' (.*)=([0-9]*) (.*)=([0-9]*)$/", $log_string, $result);

$log[$result[1][0]][$result[2][0]][$result[3][0]] = $result[4][0];
$log[$result[1][0]][$result[2][0]][$result[5][0]] = $result[6][0];
$log[$result[1][0]][$result[2][0]][$result[7][0]] = $result[8][0];
$log[$result[1][0]][$result[2][0]][$result[9][0]] = $result[10][0];
// $log is your formatted array
于 2013-05-08T12:41:36.617 に答える