Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match_all und BBCode

Einklappen

Neue Werbung 2019

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

  • preg_match_all und BBCode

    Moin,
    wie ihr bereits in der Überschrift gelesen habt, möchte ich preg_match_all benutzen. Und zwar geht es um einen BBCode, der einer URL gleicht. Hier mein bisheriger Code:
    PHP-Code:
        preg_match_all("#\[wiki(=(.*?))?:$bbcode_uid\](.*?)\[/wiki:$bbcode_uid\]#si",$message,$matches);

        for (
    $i=0$i count($matches[0]); $i++)
        {
          
    $pos strpos($message$matches[0][$i]);

          if(
    $matches[1][$i])
          {
            
    $id $matches[1][$i];
          }
          else
          {
            
    $id $matches[2][$i];
          }

          if(
    $id)
          {
            
    $message substr_replace($message$id,$pos,strlen($matches[0][$i]));
          }
        } 
    Es soll folgendermaßen Ablaufen: Wenn (wie bei URL) kein "=bla" im Tag erscheint, soll der Inhalt zwischen den Tags ausgewertet werden. Also: Der Inhalt zwischen den Tags soll die Beschreibung sein und "=bla" der Link. Wenn Link nicht exisitiert, soll Beschreibung=Link sein.

    Vielen Dank für eure Hilfe. Wenns geht vielleicht mit Erklärung, warum mein bisheriger Code nicht einwandfrei läuft. =)

    EDIT: Dass am Ende nur $id steht ist bisher nur aus Testwecken.


  • #2
    Nur auf RegExp zu setzen, ist für sowas reichlich ungeeignet.
    Auf korrekte Verschachtelung zu achten, bekommst du damit garantiert nicht hin - was dann zur Folge hat, dass in vielen Fällen vermurkstes HTML herauskommen dürfte.

    Ich empfehle: http://www.christian-seiler.de/projekte/php/bbcode/

    Kommentar


    • #3
      Zitat von ChrisB Beitrag anzeigen
      Nur auf RegExp zu setzen, ist für sowas reichlich ungeeignet.
      Auf korrekte Verschachtelung zu achten, bekommst du damit garantiert nicht hin - was dann zur Folge hat, dass in vielen Fällen vermurkstes HTML herauskommen dürfte.

      Ich empfehle: BBCode-Parserklasse für PHP
      Naja ist alles schön und gut. Leider ist es ein bereits implementiertes BBCode-System (phpBB3). Ich habe mir jetzt als Vorlage latexrender für phpBB3 genommen. Der macht das so ähnlich...

      Kommentar

      Lädt...
      X