我有这样的文字:
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);
它渲染了一个空数组!这是为什么 ?感谢
答案 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