Problem mit while-Schleife

SilentWarrior

Erfahrenes Mitglied
moin

also ich hab eine datei, und ich wollte daraus nur die zweite zeile auslesen. (file() geht nicht, da in der datei selbst php-code vorhanden ist)

also hab ichs folgendermassen probiert:
PHP:
while(!feof($fp))
 {
  $c++;
  if($c == 2)
    $untertitel = fgets($fp,1024);
 }
nur leider klappt da so gut wie gar nix. das problem ist: c++ alleine geht, if($c == 2) mach irgendwas geht auch, und die zeile in der if-anweisung alleine geht auch - nur die beiden letzten zeilen zusammen bringen probleme - kann mir einer erklären warum?
 
Vielleicht hilft es ja was wenn du um die if-anweisung geschweifte klammern setzt:
PHP:
while(!feof($fp))

 {

  $c++;

  if($c == 2)
   {
    $untertitel = fgets($fp,1024);
   }
 }
 
Öhm, ja...

Wenn man mal eine Buch->Datei Analogie verwendet, bedeutet dein Code folgendes:
"Erhöhe eine gedachte Zahl so lange, bis du am Ende des Buches angekommen bist. Wenn die gedachte Zahl zwei ist, lies genau eine Zeile. Wie du so jemals bis zum Ende des Buches kommen sollst, sag ich dir aber nicht :p"

Na ja, ich hoffe du verstehst was ich meine ;) feof() überprüft nur, ob du durch die letzte read-Aktion auf diese Datei am Ende der Datei angekommen bist. Der Dateizeiger wird nicht verändert. D.h., der erste Aufruf von fgets liest immer die erste Zeile aus.

Du könntest es z.B. so lösen:
PHP:
$c = 0;
while(!feof($fp))
{
   $untertitel = fgets($fp,1024);
   $c++;
   if($c == 2) {
      break;
   }
}

Was ich allerdings nicht so ganz verstehe, ist, was gegen die Verwendung von file() spricht...?
 
Wenn man mal eine Buch->Datei Analogie verwendet, bedeutet dein Code folgendes:
"Erhöhe eine gedachte Zahl so lange, bis du am Ende des Buches angekommen bist. Wenn die gedachte Zahl zwei ist, lies genau eine Zeile. Wie du so jemals bis zum Ende des Buches kommen sollst, sag ich dir aber nicht :p"
achso! na, wenigstens erklärt mir das hier mal einer. *g* man kann ja schliesslich nicht alles wissen.

also, deine version - die ist zwar gut, aber zeigt die nicht einfach alle zeilen bis zeile 2 an? ich meine, ich will ja nur zeile 2.
Was ich allerdings nicht so ganz verstehe, ist, was gegen die Verwendung von file() spricht...?
eben! ich hab in dem teil drin php-code, und der wird bei file seltsamerweise nicht mit übernommen. also seh ich da nur den effektiven html-code ohne php - und das will ich net, weil ich den php-code brauch.

//edit hab ne idee! :p

könnte doch so gehen:
PHP:
$c = 0;
while(!feof($fp))
 {
  $irgendwas = fgets($fp,1024);
  $c++;
  if($c == 2)
    $untertitel = fgets($fp,1024);  
 }
werde gleich mal abchecken ob das geht.

// doppel-edit
jo also öhm... ihr könnt aufhören hier euch den kopp zu zerbrechen (obwohl das natürlich gut für geist und körper ist :) ), aber ich habs anders gemacht: in der zu inkludierenden datei wird eine variable $text definiert - hab ich einfach die genommen und den entsprechenden teil rausgefiltert - weiss ehrlich gesagt auch nicht, warum ich n icht früher darauf gekommen bin.:rolleyes:
 
Zuletzt bearbeitet:
Also das Scritp von reima funktioniert auch. Und es wird auch nicht alles ausgelesen, weil die vorherige Zeile immer überschrieben wird. Also zuerst $irgendwas = Zeile1. Nachher irgendwas = Zeile2. Durch break wird die Schleife dann abgebrochen. Du müsstest allerdings als Startwert für $c 1 nehmen weil sonst liest er Zeile 3 aus.

Ich habe noch eine ganz einfache Methode:
$irgendwas = fgets($fp,1024);
$irgendwas = fgets($fp,1024);

Das müsste auch Zeile 2 liefern.

P.s. Juhuuuuuuuuuuuuuuuuuuuuuu 500 Posts!!!!!!! :) :p :eek: :p :) :rolleyes:
 
Zurück