Работа с txt файлами

Bboy

Новичок
Работа с txt файлами

Есть txt файл (около 2000 строк). Надо в этом файле найти строку str1 и все строки, к-ые после неё, до строки str2 вывести на экран.
Kod:
while (!feof($fp))
{$order= fgets($fp, 100);
if ($order=="str1")
{while($order=="str2")
echo $order."<br>";
}
flock($fp, 3);
fclose($fp);}

Что не так????
 

Bboy

Новичок
Блин, ну скажите что и куда надо добавить что бы заработало?!?!!!!
while (!feof($fp))
{$order= fgets($fp, 100);
if ($order=="Накопители CD-ROM")
{
while($order=="Накопители CD-RW")
$order= fgets($fp, 100); <<<-----если сюда, то не работает(((
echo $order."<br>";
}}

Походу надо переходить на след. строчку, но не знаю как?!!
 

Demiurg

Guest
не работают безработные. учись отлаживать свои программы.
Могу перевести, что делает твоя программа.
 

vladax

Новичок
Попробуй так:

data.dat
--------------------------------------------------
str1
str2
str3
str4
str5
str6
--------------------------------------------------

test_fgets.php
ищем "str3"
--------------------------------------------------
<?

$fh=fopen("data.dat", "r");
while (!feof($fh)):
$line = trim(fgets($fh, 4096));
if ($line=="str3") {
print $line."<br>";
while (!feof($fh)) {
print trim(fgets($fh, 4096))."<br>";
}
}
endwhile;
fclose($fh);

?>
 

Demiurg

Guest
vladax, перечитай первоначальный вопрос
 

vladax

Новичок
Допустим читаем с "str3" по "str5" (под свои накопители-CD-RW сам подстраивай)
<?php
$fh=fopen("data.dat", "r");
while (!feof($fh)){
$line = trim(fgets($fh, 4096));
if ($line=="str3") {
print $line."<br>";
while (!feof($fh)) {
$line = trim(fgets($fh, 4096));
if ($line=="str6") break 2;
else print $line."<br>";
}
}
}
fclose($fh);
?>
Всё Гуд-Бай!
 

RomikChef

Guest
Дима, этот код ошибочный и отвратительный с точки зрения грамотности, чистоты кода.
 

Bboy

Новичок
<?
$fh=fopen("price.txt", "r");
while (!feof($fh)):
$line = trim(fgets($fh, 4096));
if ($line=="str3") {
print $line."<br>";
while (!feof($fh)) {
print trim(fgets($fh, 4096))."<br>";
if ($line=="str1")
exit;
else
print trim(fgets($fh, 4096))."<br>";
}
}
endwhile;
fclose($fh);
Вот так вот не работает тоже((((((((((((((((
 

Demiurg

Guest
Дmитрий, не надо писать ерунды. твой код выдаст все строчки, которые лексически больше или равны str1 и меньше или равны str2
 

Demiurg

Guest
за "не работает" скоро убивать буду (с) tony2001
 

Bboy

Новичок
Автор оригинала: vladax
Допустим читаем с "str3" по "str5" (под свои накопители-CD-RW сам подстраивай)
<?php
$fh=fopen("data.dat", "r");
while (!feof($fh)){
$line = trim(fgets($fh, 4096));
if ($line=="str3") {
print $line."<br>";
while (!feof($fh)) {
$line = trim(fgets($fh, 4096));
if ($line=="str6") break 2;
else print $line."<br>";
}
}
}
fclose($fh);
?>
Всё Гуд-Бай!
Во первых, СПАСИБО!!!!. Все наконец-то заработало.
Во вторых: откуда же я знал что надо использовать "break 2"
В третьих: что значит break 2???
 

Bboy

Новичок
Автор оригинала: Bboy
Во первых, СПАСИБО!!!!. Все наконец-то заработало.
Во вторых: откуда же я знал что надо использовать "break 2"
В третьих: что значит break 2???
Вроде бы то, что я написал одно и то же что и Vladax, но у меня почему-то не работает. Наверно из-за этого break 2.... получается exit не рулит???
 

vladax

Новичок
break производит немедленный выход из цикла
break 2 производит немедленный выход из обоих циклов
 
Сверху