Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML zwischen Tags auslesen

Einklappen

Neue Werbung 2019

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

  • HTML zwischen Tags auslesen

    Hallo,

    ich habe einen beliebig großen String nach dem Format:

    Code:
    <div>
      <h1>
        Überschrift
      <h1>
      <p>
        Text, Umbrüche, HTML Tags, HTML Platzhalter, Sonderzeichen
      </p>
      <p>
        Text
      </p>
      ...
    </div>
    Ich möchte nun einen Array mit allem was zwischen <p> und </p> steht.

    Ich hab das ganze mit preg_match_all begonnen:

    PHP-Code:
    preg_match_all("#<p>(.*?)</p>#Uis"$text$array); 

    print_r($array); 
    Problem:

    Das ganze funktioniert nicht und ich komme einfach zu keinem Ergebniss.

    Hat jemand einen Vorschlag/Lösung?

    PS:

    Wenn mir jetzt jemand sagt ich soll das ver****te manual zu Regulären Ausdrücken und preg_match lesen dann hau ich meinen Rechner ausm Fenster ...

  • #2
    Keine Sorge, du darfst fragen, das Manual ist hier ja schon sehr komplex. Aber eine detailliertere Fehlerbeschreibung als "funktioniert nicht" wäre schon gut, was genau hast du versucht und was ergibt dein $array?

    Auf den ersten Blick sehe ich dass Du gleichzeitig *? und den U Modifikator benutzt, warum? Doppelt hält nicht immer besser.
    [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
    [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

    Kommentar


    • #3
      PHP-Code:
      preg_match_all("#<p>(.*?)</p>#s"$text$array); 
      Ok ich habe keine Ahnung warum aber so funktioniert es jetzt. Von einem auf den anderen Moment.

      Ich erhalte einen Array in dem sowohl die Texte inklusive <p> Tag als auch ohne <p> Tag vorkommen.

      Kommentar


      • #4
        Mit *? bzw. dem U-Modifikator kehrst du die Gier des Ausdrucks um.

        Wenn der Ausdruck gierig ist, matcht er so viel er kann, in deinem Fall also bis zum letzten </p> - Tag. Standardmäßig ist ein Ausdruck immer gierig. Wenn du die Gier dann mit einem Fragezeichen hinter einem Quantifikator umkehrst, matcht er nur bis zum ersten </p> - Tag, das er findet. Da du die Gier aber zusätzlich noch mit dem U-Modifikator umgekehrt hast, hast du den Ausgangszustand der Gier wiederhergestellt.
        [URL]http://hallophp.de[/URL]

        Kommentar

        Lädt...
        X