Reguläre Ausdrücke

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Reguläre Ausdrücke

    Hallo,

    ich möchte aus einer Datei nur die Zeile ausgeben lassen die eine Zahl (Das ist die Variable $select) gefolgt von einem Doppelpunkt am Anfang der Zeile enthält.

    $datei = fopen(datei.txt, "r");
    while ($line = fgets($datei, 10000))
    {
    if(ereg("^[".$select."]1}",$line))
    {
    echo fgets($datei, 10000);
    }
    }

    Das funktioniert schon, nur er gibt mir immer die nächste Zeile und nicht diejenige Zeile aus, bei der die Zahl vorkommt. Außerdem soll er nur die zeile ausgeben wo genau die Zahl der Variable vorkommt. Also z.B. $select = 42, da soll er in der Datei suchen wo am anfang 42: steht und dann diese ausgeben. Er darf jedoch nicht z.B. 4: ausgeben oder 2: ausgeben, macht er aber bis jetzt.

    DANKE

  • #2
    Zugegeben, von den File Funktionen versteh ich noch nicht soviel... aber warum gibt's du per echo nicht einfach $line aus, da dürfte doch der Inhalt der gesuchten Zeile drin stehen?
    Vielleicht setzt fgets() den Pointer automatisch? Keine Ahnung.

    Aber zu deinem RegExp-Problem kann ich dir helfen: Dein Fehler ist, dass du den Inhalt von $select als Zeichenklasse definierst. Wenn du nun "123" hast suchst du aber tatsächlich nach allen Zeichen, die entweder 1,2 oder 3 sind und von einem Doppelpunkt gefolgt werden.
    Lösung: Lass einfach die eckigen Klammern für die Zeichenklasse weg.

    Bsp:
    if(ereg("^".$select."1}",$line))

    Dass der Doppelpunkt eine spezielle Bedeutung für RegExp hat ist mir nicht bekannt, evtl. den nochmal escapen.

    Kommentar


    • #3
      Danke, funktioniert

      Kommentar

      Lädt...
      X