从文本中提取数据

时间:2014-03-06 11:39:19

标签: php regex arrays

我有这样的文字:

BEGIN_GENERAL 8
LastLine 20130801000028 136606 57288915 25883895742573
FirstTime 20130701130426
LastTime 20130731235941
LastUpdate 20130802015823 1 0 0 0 0
TotalVisits 360
TotalUnique 246
MonthHostsKnown 0
MonthHostsUnknown 454
END_GENERAL

我想提取TotalVisits& TotalUnique所以我试试:

preg_match('/^TotalVisits ([0-9]{4}) /ms', $awstats, $matches);
$data= $matches;
print_array($data);

它渲染了一个空数组!这是为什么 ?感谢

3 个答案:

答案 0 :(得分:3)

您要求一个4位数字,而提供的数字只有3位数字。请尝试使用此代码:

[0-9]+

如果你想指定一个范围(假设10到9999之间的值应该有效),你也可以这样做:

[0-9]{2,4}

答案 1 :(得分:3)

这样打电话:

preg_match('/TotalVisits\s([0-9]{3})/', $awstats, $matches);

输出:

array (size=2)
  0 => string 'TotalVisits 360' (length=15)
  1 => string '360' (length=3)

答案 2 :(得分:3)

您的示例不起作用的原因是([0-9] {4} )强制它查找四位数的数字。另外,用\ d替换[0-9]会稍微缩短表达式。

这样的事情怎么样:

^TotalVisits (\d+)$

匹配:

TotalVisits 360

相同格式适用于TotalUnique

See it in action