【发布时间】:2018-02-07 16:23:02
【问题描述】:
我在询问之前进行了搜索,但我测试过的内容不起作用。我有以下字符串:
2016-07-31 00:32:29 debian-8gb-sfo2-01 gamed: notice :
我想知道如何从这个字符串中提取日期。完整的正则表达式(缺少日期正则表达式)返回以下内容:
Array
(
[0] => 2016-07-31 00:32:29 debian-8gb-sfo2-01 gamed: notice : formatlog:gshop_trade:userid=1792:db_magic_number=1744:order_id=23727:item_id=47494:expire=0:item_count=1:cash_need=1:cash_left=99976272:guid1=0:guid2=0
[1] => 2016-07-31 00:32:29 debian-8gb-sfo2-01 gamed: notice :
[2] => 1792
[3] => db_magic_number=1744:order_id=23727:
[4] => 47494
[5] => 0
[6] => 1
[7] => 1
[8] => 99976272
)
没错,但愿望输出是:
Array
(
[1] => 2016-07-31 00:32:29
[2] => 1792
[3] => db_magic_number=1744:order_id=23727:
[4] => 47494
[5] => 0
[6] => 1
[7] => 1
[8] => 99976272
)
当前代码:
if (strpos($line, 'gshop_trade:userid=1792:') > 0) {
if (!preg_match('/(.*)\sformatlog:gshop_trade:userid=(\d+):(.*)item_id=(\d+):expire=(\d+):item_count=(\d+):cash_need=(\d+):cash_left=(\d+).*$/', $line, $d)) {
// error occured
}
echo '<pre>';
print_r($d);
}
【问题讨论】:
-
您使用的正则表达式到底是什么?你提到它,但不显示它。
-
请编辑您的问题,并添加用于提取日期的代码。根据您的数据判断,您将第 0 组添加到输出中。
-
@Seth 我添加了代码。
-
您根本没有单独捕获日期时间:
/\s*(\S+\s+\S+).*\sformatlog:gshop_trade:userid=(\d+):(.*)item_id=(\d+):expire=(\d+):item_count=(\d+):cash_need=(\d+):cash_left=(\d+).*$\K/