Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match_all und die vielen Schalter

Einklappen

Neue Werbung 2019

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

  • preg_match_all und die vielen Schalter

    Hallo,

    ich habe mich zwangsläufig einige Stunden recht erfolglos mit preg_match_all und den vielen Regex rumgeschlagen. Bin aber nicht so wie gewünscht zu einem Ergebnis gekommen. Dabei gibts ja duchauch schöne Seiten als Hilfe. Z.B. https://www.phpliveregex.com
    Brachte mir alles nichts.

    Ich habe einen Text und aus diesem sollen die BBCode ähnlichen Werte ermittelt werden.

    PHP-Code:
    $text "Das ist ein testtext, mit einem [fn=Mein Text1]10[/fn]. Und der Text geht weiter. Hier kommt die nächste [fn=Mein Text2]20[/fn]."
    Im Web hab ich was ähnliches gefunden und für meine Zwecke umgebogen.
    PHP-Code:
    preg_match_all("/\[fn=(.+)\](.+)\[\/fn\]/"$text$ausgabe); 
    Das klappt soweit gut, aber wenn der BBCode mehrfach in dem Text vorkommt, arbeitet die Regex nicht mehr wie man es will. Nur hab ich keine Idee, wie man das nun umschreibt. Hab da jemand mit Erfahrung eine Hilfestellung für mich?

    So sieht das Ergebnis aus, wenn der Code nur einmal vorkommt (so ist OK):
    Code:
    Array ( [0] => Array ( [0] => [fn=Mein Text1]10[/fn] ) [1] => Array ( [0] => Mein Text1 ) [2] => Array ( [0] => 10 ) )
    Wenn er zweimal oder mehr vorkommt, so (murks):
    Code:
    Array ( [0] => Array ( [0] => [fn=Mein Text1]10[/fn]. Und der Text geht weiter. Hier kommt die nächste [fn=Mein Text2]20[/fn] ) [1] => Array ( [0] => Mein Text1]10[/fn]. Und der Text geht weiter. Hier kommt die nächste [fn=Mein Text2 ) [2] => Array ( [0] => 20 ) )
    Ich freu mich über eine Hilfe. Danke.

    Gruß,
    Falcon

  • #2
    Regex eignet sich nicht für BBCode. Du brauchst einen BBCode-Parser.

    Kommentar


    • #3
      PHP-Code:
      preg_match_all("/\[fn=([^\]]+)\]([^\[]+)\[\/fn\]/"$text$ausgabe); 
      Signaturrrrrrr

      Kommentar


      • #4
        Danke K313. Funzt so wie es soll.

        Kommentar

        Lädt...
        X