【发布时间】:2017-12-24 14:17:03
【问题描述】:
我有一个结构如下的日志文件:
输入:
$logLine = "[2017-12-23 19:15:59:634187] [INFO] User SIMDesign successfully logged in."
我想从中得到一个数组(使用 preg_split 或 preg_match_all),如下所示:
预期输出:
[
0 => '[2017-12-23 19:15:59:634187]',
1 => '[INFO]',
2 => 'User SIMDesign successfully logged in.'
]
或者这个:
[
0 => '2017-12-23 19:15:59:634187',
1 => 'INFO',
2 => 'User SIMDesign successfully logged in.'
]
尝试:
我已经尝试了几个小时来寻找正则表达式模式,但不幸的是我没有找到适合我的解决方案。
preg_split("/[][]/", $logLine);
[
0 => '', //this is empty
1 => '2017-12-23 19:15:59:634187',
2 => ' ', //there is a space
3 => 'INFO',
4 => ' User SIMDesign successfully logged in.',
]
输出还可以,但并不完美。 我不需要数组的空元素([0],[2])。 我需要去掉字符串“用户 SIMDesign 成功登录”之前的空格。
preg_split("/[][]\s\S/", $logLine);
[
0 => '[2017-12-12 12:12:12:132123',
1 => 'INFO',
2 => 'ser SIMDesign successfully logged in.' //The first character of the string was removed (why?)
]
提前致谢
【问题讨论】:
-
试试
preg_split("/(?:\s*[][])+\s*/", $logLine, -1, PREG_SPLIT_NO_EMPTY);
标签: php regex pcre preg-split