BBCode -> preg_replace 2dimensionales Array

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

  • BBCode -> preg_replace 2dimensionales Array

    Hallo!
    Ich möcht bei meinem CMS BBCode verwenden. Ich habe ein eingabefeld und dazu auch noch 5 upload-felder für Bilder. Jedes uploadfeld hat eine Image ID z.B.: Feld 1 ID=0, Feld 2 ID=1...
    Jetzt möchte ich, dass der User die Bilder mit folgender Anweisung inkludieren kann. [IMG 1pos=right]alt-name[/IMG]
    Zum testen habe ich mir mal ein kleinen script geschrieben.

    Das Suchmuster passt auch soweit, also ich bekomme die einzelnen Teile in einem Array zurück (mit preg_match_all) allerdings check ich nicht ganz, wie das jetzt auf preg_replace() anwenden muss, da ich ja ein 2dimensionales Array habe. Ich habe schon einige Tutorials durchgelesen, bin aber noch nicht schlauer geworden was das ersetzen von 2dimensionalen Arrays angeht.
    PHP-Code:
    <?php
    $text 
    ="Das hier ist der Text. hier das bild 1 [IMG 1pos=left]bild[/IMG] hier ein weiteres
            Bild [IMG 2pos=right]bild[/IMG] und da noch eins[IMG 3pos=left]bild[/IMG]"
    ;

    $muster "@(\[IMG )(\d{1,2})pos=(left|right)]([\w ]+)(\[/IMG])@";
    preg_match_all($muster,$text,$erg);
    echo 
    "<br>";
    echo 
    $erg[1][0]."<br>"#[IMG -> <img src='
    echo $erg[2][0]."<br>"# 1 -> $bild_url[] z.b: www.syz.com/asdf.jpg
    echo $erg[3][0]."<br>"# left -> ' style='float:left'
    echo $erg[4][0]."<br>"# bild -> alt='bild'
    echo $erg[5][0]."<br>"# [/IMG] -> >

    $ersatz[1][] = "<img src='"
    $ersatz[2][] = "bild.jpg"
    $ersatz[3][] = "style='float:".$ersatz[3][]."'"
    $ersatz[4][] = " alt='".$ersatz[4][]."'"
    $ersatz[5][] = ">"

    echo 
    $neuer_textpreg_replace($muster,$ersatz,$text);

    /*
    <img src="" alt="" >
    */
    ?>

  • #2
    Re: BBCode -&gt; preg_replace 2dimensionales Array

    Simples suchen->ersetzen ist Unfug, weil du damit im Nu falsche Verschachtelungen und damit invaliden Code erzeugst.

    Also muss ein richtiger Parser her - http://www.christian-seiler.de/projekte/php/bbcode/
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo!
      Super, danke.... das ist genau das, was ich brauche.
      Muss ich eigentlich jeden BBCode selbst definieren, ober gibt es da schon forgefertigte?
      (Ich muss mir erst die Doku komplett durchlesen)
      z.B:
      PHP-Code:
      $bbcode->addCode ('b''simple_replace'null, array ('start_tag' => '<b>''end_tag' => '</b>'),
                        
      'inline', array ('block''inline'), array ()); 

      Kommentar


      • #4
        Ein Beispiel mit "gängigen" Tags findest du unter
        http://www.christian-seiler.de/proje...9.php#beispiel

        Man kann das ganze aber natürlich noch sehr viel weiter ausreizen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          hat sich erledigt...
          Zuletzt geändert von Kisi; 01.09.2006, 12:49.

          Kommentar


          • #6
            Ähm... wie mache ich das denn, wenn ich mehrere Attribute angeben möchte.
            Irgendwie will das bei mir nicht funktionieren.

            Also, mein code zum Erzeugen des BBCodes sieht so aus

            PHP-Code:
                $bbcode->addCode ('url''usecontent?''do_bbcode_url', array ('usecontent_param' => array('default','links')),
            'link', array ('listitem''block''inline'), array ('link')); 
            in der do_bbcode_url habe ich zum testen dies geschrieben

            PHP-Code:
                    if(isset($attributes['links']))
                    {
                        echo  
            "KISI";
                    } 
            meine Eingabe im Textfeld ist:
            [URL default=http://www.asdf.com links=links]asdf[/URL]

            Kommentar

            Lädt...
            X