Probleme bei BBCodes Funktion

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme bei BBCodes Funktion

    Hallo,

    Wenn ich in einem Post BBCodes verschachtel funktionieren diese nicht mehr. Sobald ich mehr als 2 BBCodes nutze bsp Fett und unterstrichen wird es nicht mehr geparst.

    BSP:
    [b ][u ]test[/u ][/b ] Leerzeichen hier für den Post eingefügt um das Parsen zu verhindern ;)


    ergibt als Ausgabe

    <b>test</b>


    Nutze ich nur einen BBCode klappt alles ohne Probleme.

    Quellcode

    1. public function cms_bbcode ($entry)
    2. {
    3. $entry = @eregi_replace("
    4. ","<br>",$entry);
    5. $entry = @eregi_replace("\[b\]([^\[]+)\[/b\]","<b>\\1</b>",$entry);
    6. $entry = @eregi_replace("\[i\]([^\[]+)\[/i\]","<i>\\1</i>",$entry);
    7. $entry = @eregi_replace("\[u\]([^\[]+)\[/u\]","<u>\\1</u>",$entry);
    8. $entry = @eregi_replace("\[img\]([^\[]+)\[/img\]","<img src=\"\\1\" border=\"0\">",$entry);
    9. $entry = @eregi_replace("\[mail\]([^\[]+)\[/mail\]","<a href=\"mailto:\\1\">\\1</a>",$entry);
    10. $entry = @eregi_replace("\[url\]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\1</a>",$entry);
    11. $entry = @eregi_replace("\[url=\"([^\"]+)\"]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\2</a>",$entry);
    12. return $entry;
    13. }
    Alles anzeigen
  • Fragz schrieb:

    fertige Lösungen kann ich leider nicht nutzen

    Wo ist das Problem eine Open Source Variante zu nutzen? Nehmen wir mal an, du findest den regulären Ausdruck, mit dem du verschachtelte Elemente parsen kannst.
    Wie gehts weiter. Was ist mit BBCode Attributen? Was ist mit BBCode Einstellungen? Ein code Parser sollte zum Beispiel keine weiteren Tags parsen.
    Aus dem Grund solltest du auf kurz oder lang unbedingt mit einem [wikipedia]Kellerautomat[/wikipedia] arbeiten.

    Und wenn dir die simple Variante reicht, warum ersetzt du nicht einfach die Symbole einzeln?
    Also z.B. [b ] durch <b>
    Und falls jemand vergisst sein Element zu schließen, dann kümmert sich dein Script nur noch um das schließen.
  • Wo ist das Problem eine Open Source Variante zu nutzen?


    Das Problem ist die BBCodes sollen in einem ACP eines Forums verwendet werden.
    Dieses ACP bietet nicht die Möglichkeit daran rum zu basteln da sonst die Automatischen Updates nicht mehr funktioneren.

    Einzige möglichkeit die ich habe ist meine eigene Klasse hizuzufügen.
    Geshi habe ich bereits versucht einzubauen allerdings gibt es da Probleme mit dem Vorhanden PHP und JS Code
  • ähm... wenn cih mich hier gleich mal dranhängen darf...:
    wie muss ich den code dann einbauen? hab jez aus nem tutoritail das hier raus:

    Quellcode

    1. function parse_bbcode($str)
    2. {
    3. # HTML Zeichen maskieren
    4. $str = htmlentities($str);
    5. # Smilies
    6. $str = str_replace(':)', '<img src="smile.gif" />', $str);
    7. $str = str_replace(':lol:', '<img src="lol.gif" />', $str);
    8. $str = str_replace(':cool:', '<img src="cool.gif" />', $str);
    9. $str = str_replace(':thumb:', '<img src="mr_green.gif" />', $str);
    10. $str = str_replace(':eek:', '<img src="eek.gif" />', $str);
    11. # Formatierungen
    12. $str = preg_replace('#\[b\](.*)\[/b\]#isU', "<b>$1</b>", $str);
    13. $str = preg_replace('#\[i\](.*)\[/i\]#isU', "<i>$1</i>", $str);
    14. $str = preg_replace('#\[u\](.*)\[/u\]#isU', "<u>$1</u>", $str);
    15. $str = preg_replace('#\[color=(.*)\](.*)\[/color\]#isU', "<span style=\"color: $1\">$2</span>", $str);
    16. $str = preg_replace('#\[size=(8|10|12)\](.*)\[/size\]#isU', "<span style=\"font-size: $1 pt\">$2</span>", $str);
    17. # Links
    18. $str = preg_replace('#\[url\](.*)\[/url\]#isU', "<a href=\"$1\">$1</a>", $str);
    19. $str = preg_replace('#\[ url=(.*)\](.*)\[/url\]#isU', "<a href=\"$1\">$2</a>", $str);
    20. # Grafiken
    21. $str = preg_replace('#\[img\](.*)\[/img\]#isU', "<img src=\"$1\" alt=\"$1\" />", $str);
    22. # Zitate
    23. $str = preg_replace('#\[quote\](.*)\[/quote\]#isU', "<div class=\"zitat\">$1</div>", $str);
    24. # Quelltext
    25. $str = preg_replace('#\[code\](.*)\[/code\]#isU', "<div class=\"code\">$1</div>", $str);
    26. # Listen
    27. $str = preg_replace('#\[list\](.*)\[/list\]#isU', "<ul>$1</ul>", $str);
    28. $str = preg_replace('#\[list=(1|a)\](.*)\[/list\]#isU', "<ol type=\"$1\">$2</ol>", $str);
    29. $str = preg_replace("#\[*\](.*)\\r\\n#U", "<li>$1</li>", $str);
    30. return $str;
    31. }
    32. ?>
    Alles anzeigen

    in der datei bb-code.php, welche per include in der datei templates_oben.php, welche per include in die jeweilige seite rein geht, aber es funktioniert nicht... was muss ich da mit dem text noch verändern?

    Edit: oh... entschuldigung, hätte vllt. das tutorital fertig lesen müssen, ich weiß jez meinen fehler... kann das vllt. wer löschen?^^

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Fipsi ()