file problem

Sassar

Grünschnabel
Hi Leute,

und zwar habe ich folgendes Problem:
ich möchte eine Datei auslesen, welche viele Zeilen hat. Dabei möchte ich jedoch nur die Zeilen ausgeben lassen, welche nicht mit "//" ausgeklammert wurden. Das Problem dabei ist. Das wenn er eine Zeile findet er alle Zeilen nicht mehr anzeigt. Hier ist der ausschnitt aus dem Programmcode vielleicht kann ja wer helfen =)

PHP:
$inhalt = file($pfad);
for($y=0;$y<count($inhalt);$y++)
{
 $zeile = $inhalt[$y];
 if(preg_match("//", $inhalt[$y])==0)
 {
  echo 'zeile '.$y.': '. $inhalt[$y].'<br>';
 }
}
 
Hi,

hab zwei Fehler gefunden:

1. Die Zeile wird nur angezeigt, wenn das RegEx Pattern nicht zutrifft.
2. Der RegEx Pattern ist sehr fragwürdig. Das erste Zeichen im Pattern wird als Begrenzer interpretiert.

Dein Pattern müßte alle hinter dem doppelten Slash abschneiden. Wenn die Zeile dann leer ist, brauch sie nicht ausgegeben werden.

Als Code schaut das so aus:
PHP:
function printLine($lineNumber, $line)
{
    printf("Zeile %u: %s\n", $lineNumber, rtrim($line, "\n"));
}

$content = file($path);
foreach ($content as $key => $line) {
    $slashPosition = strpos($line, '//');
    if ($slashPosition === false) {
        printLine($key + 1, $line);
        continue;
    }
    
    if ($slashPosition === 0) {
        continue;
    }
    
    $cleanLine = substr($line, 0, $slashPosition);
    printLine($key + 1, $cleanLine);
}

Dieser Code zeigt entweder die komplette Zeile an, überspringt sie oder zeigt sie bis zum "Kommentar" an.

Gruß Kyoya Stefan
 
Zurück