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}*/
但是服务器日志不是每行都是这样的,有很多#开头的,所以才想做个正则过滤掉其他格式的。 
   这个分不能浪费了 
   日志文件一般都很大  
 你需要在循环中逐行读取,拆分成数组
   
 
   