|
|
|
| Есть текстовый файл: 14000 строк
Нужно вырезать часть строк до определенной строки и записать в другой файл.
Строки примерно такие:
AAAB=AAAA=МОСКВА=1=ПЕР. 1-ЫЙ СПАСОНАЛИВКОВСКИЙ, 18, СТР.1=(095) 238-59-59, 238-59-70=-=9:30-17:00=CLOSED=CLOSED=1.00=50000.00
Разделитель: =
Нужно прочитать файл, если встречается END, то все, что до END вставить в другой файл.
Если кто может помочь, буду очень рад. | |
|
|
|
|
|
|
|
для: polaxlex
(05.04.2006 в 08:13)
| | у, да это Вам в другой раздел форума - в Рег. Выраения. | |
|
|
|
|
|
|
|
для: polaxlex
(05.04.2006 в 08:13)
| | Ну моё предложение:
Открываем файл функцией file. Ну и начинаем построчно сравнивать с end. Если не равно, то сразу же пишем эту строчку в другой файл.
$File = file("data1.txt"); //файл с которого считываем
$File_data = fopen("data2", "r+"); //файл в который надо записать
for ($i=0; $i < count($File); $i++)
{
if ($File[$i] != "END")
{
fputs($File_data,$File[$i]);
}
else
{
break;
}
}
|
| |
|
|
|
|
|
|
|
для: TrunK
(05.04.2006 в 08:27)
| | работает, только этот скрипт все содержимое файла перекидывает в новый файл. | |
|
|
|
|
|
|
|
для: polaxlex
(05.04.2006 в 10:56)
| | А файл очень большой? | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 11:00)
| | да 14700 строк, 1370 kb. | |
|
|
|
|
|
|
|
для: polaxlex
(05.04.2006 в 11:07)
| | Можете привести фрагмент из нескольких строк, среди которых есть этот признак конца текста END ?
Желательно аттачем. | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 11:11)
| | ZSFN=INTL=ЗЕСТАФОНИ=1=УЛ. АГМАШЕНЕБЕЛИ, 17=(995392) 5-63-87=-=10:00-18:00=10:00-15:00=CLOSE=1.00=50000.00
ZUGA=GPBN=ЗУГДИДИ=0=УЛ. Ц.ДАДИАНИ, 5=(995315) 2-16-71=-=10:00-17:00=10:00-14:00=CLOSE=1.00=50000.00
ZUGD=GPBN=ЗУГДИДИ=0=УЛ. РУСТАВЕЛИ, 94=(995315) 5-00-08, 5-08-08=-=9:30-17:00=CLOSED=CLOSED=1.00=50000.00
ZUMT=ESAV=UMTATA=0=8 YORK ROAD=+27 11 880 4171=-=8:00-17:00=CLOSED=CLOSED=1.00=9500.00
ZWIN=ESVN=WINDHOEK=0=53 TAL STREET, CNR STUBEL STREET=+264 61 246 986=-=8:00-17:00=8:00-11:00=CLOSED=1.00=9500.00
END
DIRECTIONS
AAAA=ПРОМБАНК=ПРОМБАНК=RUS=1
AABA=ДЕЛОВОЙ НАКОПИТЕЛЬНЫЙ БАНК=ДЕЛОВОЙ НАКОПИТЕЛЬНЫЙ БАНК=RUS=0
AACA=FINCOMBANK=FINCOMBANK=MDA=1 | |
|
|
|
|
|
|
|
для: polaxlex
(05.04.2006 в 11:17)
| |
<?
$fin = fopen("data.txt", "r"); // input
$fout = fopen("data2.txt", "w"); // output
while(!feof($fin))
{
$s = fgets($fin);
if($s == "END\n")
break;
fputs($fout, $s);
}
fclose($fin);
fclose($fout);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 11:27)
| | "END\n" не распознается.
сделал через счетчик:
$counter=0;
while(!feof($fin))
{
$s = fgets($fin);
$counter++;
if ($counter == 11713){
break;
}else{
fputs($fout, $s);
}
}
берет из файла строки до 11713 строки, перекидывает в другой файл, но мне нужно еще чтобы дальше читал строки с 11715 до 13067 строки записывал в другой файл.
Делаю так:
$counter=0;
while(!feof($fin))
{
$s = fgets($fin);
$counter++;
if ($counter == 11713){
break;
}else{
fputs($fout, $s);
}
if (($counter<11715) & ($counter == 13067)) {
break;
}else{
fputs($fout1, $s);
}
}
Может кто подскажет в чем ошибка. | |
|
|
|
|
|
|
|
для: polaxlex
(06.04.2006 в 14:45)
| | >"END\n"
" не распознается.
А если написать
if($s == "END\n" || $s == "END\r\n")
break;
|
Это позволит обрабатывать тексты независимо от ос(unix или windows) .
Если не получится - можете попробовать отправить мне файл на e-mail, я погляжу, что там за кошмар с символами. | |
|
|
|