[PHP5] Verständnis Problem: preg_match

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

  • [PHP5] Verständnis Problem: preg_match

    Hallo,

    ich möcht mit dem Befehl preg_match einen Teil aus einem String kopieren.

    In dem String ist ein HTML Code, und kopieren möchte ich alles was zwischen:

    <th>Titel</th>

    und

    </table>

    steht.

    Bihe habe ich nur rausgefunden, das preg_match der optimaltse Befehl ist, nur leider steige ich durch die Beschreibung ganz durch :-(

    Gibt es vielleicht ausser bei php.net eine gute Erklärung zu dem Befehl?

    Wenn ich mir nur das hier angucke;

    preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $treffer);

    Verstehe ich nur noch Bahnhof, was machen die @ Zeichen da oder die Fragezeichen usw...

  • #2
    Mach dich über reguläre Ausdrücke schlau: http://de2.php.net/manual/en/ref.pcre.php

    Kommentar


    • #3
      Ok,

      folgendes geht ohne Probleme:

      Code:
      preg_match_all('|<strong>(.*)</strong>|', $a, $ausgabet);
      Aber wenn ich jetzt:

      Code:
      preg_match_all('|<td class="tvl-time">(.*)</td>|', $a, $ausgabez);
      bekomme ich bei $ausgabez einen leeren Array.

      Ein Teile aus $a den er eigentlich finden sollte:

      Code:
      <td class="tvl-time">
      06:40
      </td>
      Ich schätze mal es liegt an den " oder?

      habe es schon mit

      Code:
      preg_match_all('|<td class=\"tvl-time\">(.*)</td>|', $a, $ausgabez);
      versucht, klappt aber auch nicht :-( wieder leerer Array

      Wo liegt der Fehler?

      Kommentar


      • #4
        Original geschrieben von Laire
        Wo liegt der Fehler?
        der modifier "s" fehlt, dann matcht .* auch über zeilenumbrüche hinaus

        Kommentar


        • #5
          Yupp, aber jetzt kommt das nächste Problem.

          In dem Quelltext kommt mehrmals </td> vor. Er scheint jetzt automatisch den letzten </td> zu nehmen, der vorkommt. Er soll aber den ersten </td> nehmen, der kommt nachdem er <td class="tvl-time"> gefunden hat.

          Kommentar


          • #6
            reguläre ausdrücke sind gierig. mit dem modifier "U"ngreedy nicht mehr

            Kommentar

            Lädt...
            X