您好,欢迎访问一九零五行业门户网

问个服务器日志的正则怎么写

2013-06-23 04:33:51 w3svc1539885 198.56.185.162 get /robots.txt - 80 - 66.249.75.65 mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) 404 0 2
我想分别匹配日期2013-06-23/时间04:33:51/服务器ip198.56.185.162/文件地址robots.txt/蜘蛛ip66.249.75.65/蜘蛛信息mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html)/状态码404 0 2/,这个如何精确匹配?
回复讨论(解决方案) 最好举一个特定的例子,然后给出你期望的结果,你的问题表示看不懂
最好举一个特定的例子,然后给出你期望的结果,你的问题表示看不懂
代码就是特定的例子,我想取的值标注在下面,就是想写一句话正则匹配,用pregmatch这种生成一个数组然后我再干点其他的事。
我想这个日期的格式应该是固定的,你可以按空格将它们分割,例如
$log = '2013-06-23 04:33:51 w3svc1539885 198.56.185.162 get /robots.txt - 80 - 66.249.75.65 mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) 404 0 2';var_dump( explode(' ', $log) ); /**array(14) { [0]=> string(10) 2013-06-23 [1]=> string(8) 04:33:51 [2]=> string(12) w3svc1539885 [3]=> string(14) 198.56.185.162 [4]=> string(3) get [5]=> string(11) /robots.txt [6]=> string(1) - [7]=> string(2) 80 [8]=> string(1) - [9]=> string(12) 66.249.75.65 [10]=> string(72) mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) [11]=> string(3) 404 [12]=> string(1) 0 [13]=> string(1) 2}*/


我想这个日期的格式应该是固定的,你可以按空格将它们分割,例如
$log = '2013-06-23 04:33:51 w3svc1539885 198.56.185.162 get /robots.txt - 80 - 66.249.75.65 mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) 404 0 2';var_dump( explode(' ', $log) ); /**array(14) { [0]=> string(10) 2013-06-23 [1]=> string(8) 04:33:51 [2]=> string(12) w3svc1539885 [3]=> string(14) 198.56.185.162 [4]=> string(3) get [5]=> string(11) /robots.txt [6]=> string(1) - [7]=> string(2) 80 [8]=> string(1) - [9]=> string(12) 66.249.75.65 [10]=> string(72) mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) [11]=> string(3) 404 [12]=> string(1) 0 [13]=> string(1) 2}*/


我想这个日期的格式应该是固定的,你可以按空格将它们分割,例如
$log = '2013-06-23 04:33:51 w3svc1539885 198.56.185.162 get /robots.txt - 80 - 66.249.75.65 mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) 404 0 2';var_dump( explode(' ', $log) ); /**array(14) { [0]=> string(10) 2013-06-23 [1]=> string(8) 04:33:51 [2]=> string(12) w3svc1539885 [3]=> string(14) 198.56.185.162 [4]=> string(3) get [5]=> string(11) /robots.txt [6]=> string(1) - [7]=> string(2) 80 [8]=> string(1) - [9]=> string(12) 66.249.75.65 [10]=> string(72) mozilla/5.0+(compatible;+googlebot/2.1;++http://www.google.com/bot.html) [11]=> string(3) 404 [12]=> string(1) 0 [13]=> string(1) 2}*/


但是服务器日志不是每行都是这样的,有很多#开头的,所以才想做个正则过滤掉其他格式的。
这个分不能浪费了
日志文件一般都很大
你需要在循环中逐行读取,拆分成数组
其它类似信息

推荐信息