BBCode?

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

  • Für den [coderwiki]Informationen/bbCode[/coderwiki] würde ich eine PEAR Klasse verwenden:

    http://pear.php.net/package/HTML_BBCodeParser

    oder falls Du kein PEAR zur Verfügung hast:

    http://www.christian-seiler.de/projekte/php/bbcode/index.html

    Für Syntaxhighlighting würde ich mich mal mit "GeSHi - Generic Syntax Highlighter"

    http://qbnz.com/highlighter/

    näher beschäftigen.

    70abc
  • man kann natürlich vorgefertigte codes verwenden.

    aber man kann es auch selbst programmieren. dabei gibt es grundsätzlich zwei verschiedene lösungsansätze:
    • Regular Expressions -> Siehe unter anderem http://de.php.net/preg_replace . Wenn man die Regular Expressions erlernt, kann man alle möglichen Strings auf gewisse Suchmuster, wie sie BBCodes ja sind, untersuchen, und dann mittels preg_replace mit anderen Mustern ersetzen. Vorteile dieser Lösung: Regular Expressions sind auf sehr viele andere Programmiersprachen übertragbar, nichts PHP-spezifisches, und wenn man sie einmal drauf hat, spart man sich ne Menge Arbeit beim Programmieren.
    • Arbeit mit speziellen Stringfunktionen von PHP, wie z.B. http://de.php.net/substr oder http://de.php.net/str_replace . Vorteil: Man muss keine Regular Expressions lernen (was ja doch nicht ganz so einfach ist), außerdem könnte ich mir vorstellen, dass diese Funktionen, gerade bei simplen Stringuntersuchungen, schneller sind als regex.


    Ich bevorzuge allerdings den Einsatz von Regular Expressions.

    Gibt einige Threads dazu in diesem PHP Board.
    Den hier z.B.:
    http://www.easy-coding.de/regular-expressions-t27.html
  • "wulfgang" schrieb:

    [*]Arbeit mit speziellen Stringfunktionen von PHP, wie z.B. http://de.php.net/substr oder http://de.php.net/str_replace . Vorteil: Man muss keine Regular Expressions lernen (was ja doch nicht ganz so einfach ist), außerdem könnte ich mir vorstellen, dass diese Funktionen, gerade bei simplen Stringuntersuchungen, schneller sind als regex.
    [/list]


    Da du im Falle von BBCode in der Regel eine Referenz auf die in den BBCodeTags eingeschlossenen Daten brauchst, wird dieser Weg wohl nur sehr schwer realisierbar sein.

    Ich denke, wenn man sich die Mühe machen will und eigene Routinen dazu schreibt wird man um RegEx nicht rum kommen.

    70abc
  • Jawoll donut

    hier der code:

    Quellcode

    1. <?php
    2. $db_host = "localhost"; // DB HOST
    3. $db_user = "shoutbox3"; // DB USER
    4. $db_pass = "----"; // DB PASS
    5. $db_base = "shoutbox1"; // DB BASE
    6. //deinen text filterst du dann so:
    7. $link['text'] = str_replace($left, $right, $link['text']);
    8. $conf["per_page"] = "10"; // Einträge pro Seite
    9. @mysql_connect($db_host, $db_user, $db_pass) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    10. mysql_select_db($db_base) OR die("Datenbank konnte nicht benutz werden, Fehlermeldung: ".mysql_error());
    11. $go_page = $_GET["page"];
    12. if($go_page < 1 OR empty($go_page) OR $go_page == 0): $go_page = 1; endif;
    13. $hit = mysql_fetch_object(mysql_query("SELECT COUNT(*) AS hits FROM shoutbox1 "));
    14. $hits = $hit->hits;
    15. $go_pages = ceil($hits/$conf["per_page"]);
    16. $untergrenze = ($go_page-1)*$conf["per_page"];
    17. $query = "SELECT * FROM shoutbox1 ORDER BY id DESC LIMIT ".$untergrenze." , ".$conf["per_page"]."";
    18. $result = mysql_query($query);
    19. while($link = mysql_fetch_array($result)) {
    20. include('zensiert.php');
    21. include('smilie.php');
    22. require_once('bbcode/stringparser_bbcode.class.php');
    23. echo "<ul class=\"ul\"><li class=\"head\"><div style='float: right;'>Autor: <a href='".$link['url']."' target='_blank'>".$link['name']."</a></div><b>"."#".$link['id']."</b></li>";
    24. echo "<li class=\"con\">".$link['text']."</li>";
    25. echo "<li class=\"footer\">"." ".$link['date']." - ".$link['time']."<br /></li></ul>";
    26. }
    27. $i = 0;
    28. while($i < $go_pages){
    29. $i++;
    30. if($i == $go_page){
    31. // Link, der gerade aktiv ist
    32. $go_page_code .= ' <b>[ '.$i.' ]</b>';
    33. } else {
    34. // Anzeige bei allen anderen Links
    35. $go_page_code .= ' <a href="?page='.$i.'">[ '.$i.' ]</a>';
    36. }
    37. }
    38. echo "<br />".$go_page_code."<br />";
    39. ?>
    Alles anzeigen
    --Kommt noch--
  • na, da warst du ja nah dran :wink:

    habs zwar nicht getested, aber immerhin hab ich mal die bbcode funktion eingebaut 8)
    Hier ist die Dokumentation


    Quellcode

    1. <?php
    2. $db_host = "localhost"; // DB HOST
    3. $db_user = "shoutbox3"; // DB USER
    4. $db_pass = "----"; // DB PASS
    5. $db_base = "shoutbox1"; // DB BASE
    6. /*MOVED*/ include('zensiert.php');
    7. /*MOVED*/ include('smilie.php');
    8. /*MOVED*/ require_once('bbcode/stringparser_bbcode.class.php');
    9. /*MOVED*/ $bbcode = new StringParser_BBCode ();
    10. /*NEU*/ $eindimensional = file('google.txt');
    11. /*NEU*/ foreach($eindimensional as $line) {
    12. /*NEU*/ $line = explode('||', $line);
    13. /*NEU*/ $left[] = $line[0];
    14. /*NEU*/ $right[] = $line[1];
    15. /*NEU*/ }
    16. $conf["per_page"] = "10"; // Einträge pro Seite
    17. mysql_select_db($db_base) OR die("Datenbank konnte nicht benutz werden, Fehlermeldung: ".mysql_error());
    18. $go_page = $_GET["page"];
    19. if($go_page < 1 OR empty($go_page) OR $go_page == 0): $go_page = 1; endif;
    20. $hit = mysql_fetch_object(mysql_query("SELECT COUNT(*) AS hits FROM shoutbox1 "));
    21. $hits = $hit->hits;
    22. $go_pages = ceil($hits/$conf["per_page"]);
    23. $untergrenze = ($go_page-1)*$conf["per_page"];
    24. $query = "SELECT * FROM shoutbox1 ORDER BY id DESC LIMIT ".$untergrenze." , ".$conf["per_page"]."";
    25. $result = mysql_query($query);
    26. while($link = mysql_fetch_array($result)) {
    27. /*MOVED*/ $link['text'] = str_replace($left, $right, $link['text']);
    28. echo "<ul class=\"ul\"><li class=\"head\"><div style='float: right;'>Autor: <a href='".$link['url']."' target='_blank'>".
    29. $link['name']."</a></div><b>"."#".$link['id']."</b></li>";
    30. /*MODIFIED*/ echo "<li class=\"con\">".$bbcode->parse ($link['text'])."</li>";
    31. echo "<li class=\"footer\">"." ".$link['date']." - ".$link['time']."<br /></li></ul>";
    32. }
    33. $i = 0;
    34. while($i < $go_pages){
    35. $i++;
    36. if($i == $go_page){
    37. // Link, der gerade aktiv ist
    38. $go_page_code .= ' <b>[ '.$i.' ]</b>';
    39. } else {
    40. // Anzeige bei allen anderen Links
    41. $go_page_code .= ' <a href="?page='.$i.'">[ '.$i.' ]</a>';
    42. }
    43. }
    44. echo "<br />".$go_page_code."<br />";
    45. ?>
    Alles anzeigen