Regulärer Ausdruck funzt nicht...

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

  • Regulärer Ausdruck funzt nicht...

    Hallo, bin blutiger Anfänger was reguläre Ausdrücke angeht. Ich möchte HTML-Code parsen und alle Strings, die sich zwischen den Tags <P> und </P> befinden, in ein Array einlesen.

    Mein Code:

    #$pdf_daten ist der durch ein Formular per POST übergebene, zu parsende String

    if (preg_match_all("|<P>(.*)</P>|", $pdf_daten, $b_treffer)) {

    for ($i=0; $i < count($b_treffer[1]); $i++) {

    print $b_treffer[1][$i] . "<br>";

    }

    } else {

    print "Fehlerhaftes Format!";

    }

    Das klappt aber nicht, die Variante mit <LI></LI> statt <P></P> funzt aber, liegt also wahrscheinlich am String... Der sieht - in Auszügen - so aus:

    <UL STYLE='DISK'>
    <LI>topic1</LI>
    <LI>topic2</LI>
    <LI>topic3</LI>
    </UL>
    <P>
    <EM>Wie das geht:</EM><BR>
    bla bla bla
    bla
    bla
    bla bla
    </P>

    ... wird wohl mit daran liegen, das topic1 in einer Zeile mit den begrenzenden Tags steht. Wie kann ich berücksichtigen, dass das bei dem String, der durch <P> und </P> begrenzt wird, nicht so ist?

    Gruß,

    Maik

  • #2
    Versuch den modifier 'm' und außerdem U (ungreedy) und i (keine Unterscheidung zwischen Groß- und Kleinschreibung).
    PHP-Code:
    preg_match_all("|<P>(.*)</P>|mUi"$pdf_daten$b_treffer
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

    Kommentar


    • #3
      Leider war es das nicht...

      ... das gleiche Ergebnis, die "else"-Bedingung tritt ein. GROMPF - zumindest weiß ich jetzt, wie ich Groß- oder Kleinschreibung vernachlässige.

      Warum findet er bloß nix? Er tut ja gerade so, also ob es keinen String gäbe, der durch <p>-Tags eingeschlossen wird. Werden vielleicht Leerzeichen oder Carriagereturns auf besondere Weise quotiert?

      vielen Dank, es muss aber noch an etwas anderem liegen...

      Maik

      Kommentar


      • #4
        Was kommt den raus, wenn du den String direkt in der PHP-DAtei definierst
        PHP-Code:
        $pdf_daten "<P>Irgendwas</P>" 
        Damit kannste ein wenig rumspielen, vielleicht hilft dir das

        Kommentar


        • #5
          Das geht ...

          ... also musste es am zu parsenden String liegen. Des Rätsels Lösung: Die Zeilenumbrüche "\n"!

          PHP-Code:
          $pdf_daten ereg_replace("\n"" "$daten); 
          ... und die Sache läuft. Wenn mir jetzt noch jemand erklären kann warum....

          Dank an euch!

          Maik

          Kommentar

          Lädt...
          X