php работа с текстовыми файлами

Snoopik
На сайте с 20.02.2009
Offline
29
1698

Привет всем, столкнулся с такой проблемой.

Из файла формата .txt

Нужно каким-то образом вырезать и добавить в таблицу.

Пример текстового файла :


teamid teamname generickitid balltype
1 Арсенал 1 179
2 Aston Villa 2 179

Как понимаете между ними пробелы.

Нужно сделать , так чтобы, когда крон выполняет скрипт, он вытягивал отсюда.

Поля id, teamname,generickitid,balltype.

И заносил в базу в отдельные поля.

То есть , как-то нужно убрать проблемы и в тоже время правильно обрезать лишнее.

Помогите может у кого есть данный функционал или как. Вообще не понимаю, как не вытащить и всё.

public class SearchEngines
K
На сайте с 28.12.2008
Offline
61
kud
#1

Где-то так:

<?php

// считываем данные из файла
$data = file("имя файла.txt");
// удаляем первую строку
unset($data[0]);
// получаем данные каждой строки
foreach ($data as $key => $value) {
list($teamid,$teamname, $generickitid, $balltype) = preg_split("#[\s]+#",$value);
// вставляем данные в базу
}
// перезаписываем файл
file_put_contents("teamid teamname generickitid balltype\n","имя файла.txt");
?>
Snoopik
На сайте с 20.02.2009
Offline
29
#2
kud:
Где-то так:
<?php

// считываем данные из файла
$data = file("имя файла.txt");
// удаляем первую строку
unset($data[0]);
// получаем данные каждой строки
foreach ($data as $key => $value) {
list($teamid,$teamname, $generickitid, $balltype) = preg_split("#[\s]+#",$value);
// вставляем данные в базу
}
// перезаписываем файл
file_put_contents("teamid teamname generickitid balltype\n","имя файла.txt");
?>

Данный код делает, то, что нужно. Но он считает только 3 пробела в любом месте. То есть во второй строке 179 не показывает из-за того,что Астон Вилла раздельно.

K
На сайте с 28.12.2008
Offline
61
kud
#3
Snoopik:
Данный код делает, то, что нужно. Но он считает только 3 пробела в любом месте. То есть во второй строке 179 не показывает из-за того,что Астон Вилла раздельно.

<?php
// считываем данные из файла
$data = file("txt.txt");
// удаляем первую строку
unset($data[0]);
// получаем данные каждой строки
foreach ($data as $key => $value) {
preg_match("#([\d]+)[\s]*([-a-zА-я ]+)([\d]+)[\s]+([\d]+)#si",$value, $out);
list(,$teamid,$teamname, $generickitid, $balltype) = $out;
// $teamname по идее с пробелом в конце, поэтому обрезвем
$teamname = trim($teamname);
}
// перезаписываем файл
file_put_contents("./txt.txt","teamid teamname generickitid balltype\n");
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий