我有一个记录一些信息的.txt文件。我想将它加载到MySQL表,但我有一个以下问题:.txt日志文件不统一,这意味着它看起来像这样:
04092012 16:07:34.988 stuff1 stuff2 username1 importantStuff
04092012 16:08:12.145 stuff1 stuff2 stuff3 username2 stuff4 importantStuff
重要的是要说所有用户名都以相同的字符开头,就像这里一样。我知道我应该使用类似的东西:
$lines=file(log.txt);
foreach($lines as $v) {
$values = explode(' ',$v);
...
但我不知道如何只将日期,时间,用户名和importantStuff传输到MySQL表中。
我感谢任何帮助。提前谢谢。
答案 0 :(得分:2)
$file = file_get_contents('log.txt');
$lines = explode("\n", $file);
foreach($lines as $v) {
$values = explode(' ',$v);
$all = count($values);
$user = preg_match_all('/(user\w+\b)/', $v, $matches); // it will match all usernames that start with "user"
$time = $values[1];
$username = $matches[0][0];
$stuff = $values[($all-1)];
$date = $values[0];
$query = "INSERT INTO `MyTable` ('".$date."', '".$time."', '".$username."', '".$stuff."')";
}
答案 1 :(得分:2)
如果你确定这些东西部分不包含与用户名部分相同的模式,你可以使用类似的东西:
$lines=file(log.txt);
foreach($lines as $v) {
$values = explode(' ',$v);
$date = "";
$time = "";
$important = "";
$username = "";
foreach($values as $cnt => $val){
if($cnt == 0){
$date = $val;
} else if($cnt == 1){
$time = $val;
} else if(substr($val, 0, 8) == 'username'){
$username = $val;
}
$important = $val;
}
$query = "INSERT INTO logtable VALUES ('$date', $time', '$username', '$important')";
}