Eigener bb code - Onlinegame

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

  • Eigener bb code - Onlinegame

    hi,

    ich mache momentan ein forum für ein Onlinegame und in diesem kann man auch eigene bb codes erstellen. Bei den onlinegames gibt es kbs... leider sind diese nicht übersichtlich, da sie nicht gerade geordnet sind. Deswegen will ich meinen eigenen bb codes, damit die kbs geordnet in einer tabelle anstehen. Wär auch kein problem... also <b>, <i>, <quote> usw. würde ich noch selber hinkriegen, jedoch sind bei dem kb mehrere zeilen vorhanden und leider weiss ich nicht wie das geht. Ich hoffe mir kann jemand helfen.


    Ein kb sieht so aus:
    Kampfbericht
    Vom: 22.05.2006 21:42
    Besiedlung der Insel fehlgeschlagen!
    Einheiten des Angreifers: 001# Kakashi (10:9:7)
    Gesamt Verluste
    Kleines Kriegsschiff 255 0
    Siedlungsschiff 1 0
    Schwertkämpfer 394 0
    Kanonier 6 0
    Legion 365 0
    Einheiten des Verteidigers: ~~Styl f0r 0n3~~ (9:11:16)
    Gesamt Verluste
    Kriegsschiff 3 3
    Siedlungsschiff 1 1
    Schwertkämpfer 9 9
    Zerstörung (Dorfzentrum) Stufe 11 > Stufe 5
    Plünderung ( Gold Holz Stein Nahrung )
    Gold 2852
    Stein 0
    Holz 2148
    Nahrung 0


    Aussehen soll es dann ca. so:

    Quellcode

    1. <table width="400" cellspacing="0" cellpadding="3"><tr><td colspan="3" style="background-image: url(images/ingame/status_kolo0.gif);"><b><font color="red">Besiedlung der Insel fehlgeschlagen!</font></b></td></tr><tr><td colspan="3"><b>Einheiten des Angreifers:</b> 001# Kakashi (10:9:7)</td></tr><tr><td width="50%"></td><td ><b>Gesamt</b></td><td ><b>Verluste</b></td></tr><tr><td >Kleines Kriegsschiff</td><td >255</td><td >0</td></tr><tr><td >Siedlungsschiff</td><td >1</td><td >0</td></tr><tr><td >Schwertkämpfer</td><td >394</td><td >0</td></tr><tr><td >Kanonier</td><td >6</td><td >0</td></tr><tr><td >Legion</td><td >365</td><td >0</td></tr><tr><td colspan="3"><b>Einheiten des Verteidigers:</b> ~~Styl f0r 0n3~~ (9:11:16)</td></tr><tr><td width="50%"></td><td ><b>Gesamt</b></td><td ><b>Verluste</b></td></tr><tr><td >Kriegsschiff</td><td >3</td><td >3</td></tr><tr><td >Siedlungsschiff</td><td >1</td><td >1</td></tr><tr><td >Schwertkämpfer</td><td >9</td><td >9</td></tr><tr><td >Zerstörung (<i>Dorfzentrum</i>)</td><td colspan="2"><i>Stufe</i> 11 <b>></b> <i>Stufe</i> <b>5</b></td></tr><tr><td colspan="3"><b>Plünderung ( Gold Holz Stein Nahrung )</td></tr><tr><td >Gold</td><td colspan="2">2852</td></tr><tr><td >Stein</td><td colspan="2">0</td></tr><tr><td >Holz</td><td colspan="2">2148</td></tr><tr><td >Nahrung</td><td colspan="2">0</td></tr></table>


    Der bbcode soll dan [kb] oder [bericht] heissen. Sprich wenn ich den normalen kb nehme und meinen bbcode anwende soll der umgewandelte bericht mit der html-tabelle entstehen.


    thx
    SpEaR
  • ich hoffe du sprichst regular expressions ;)
    Das nächste mal unbedingt ansätze posten!
    Selbst der normale bbCode hätte geholfen

    Quellcode

    1. <?
    2. function bb_bericht($string)
    3. {
    4. preg_match_all("=\[bericht\](.*)\[/bericht\]=siU", $string, $res);
    5. $count = count($res[0]);
    6. //Alle Berichte ersetzen
    7. for($i=0; $i<$count; $i++) {
    8. $search = $res[0][$i];
    9. $tmp = $res[1][$i];
    10. $tmp = explode("\n", $tmp);
    11. $replace = '<table width="400" cellspacing="0" cellpadding="3">';
    12. foreach($tmp as $line) {
    13. $replace .= "<tr>\n";
    14. //3er Spalten
    15. if(preg_match("/(Kampfbericht|Besiedlung|Einheiten|Zerstörung|Plünderung|Vom:)/i", $line))
    16. $replace .= '<td colspan="3">'.$line.'</td>';
    17. else {
    18. $line = explode(" ", $line);
    19. $k=0;
    20. foreach($line as $column) {
    21. if(count($line) == 2 && ++$k == 1)
    22. //2er Spalten
    23. $replace .= '<td colspan="2">'.$column.'</td>';
    24. else
    25. //1er Spalten
    26. $replace .= '<td>'.$column.'</td>';
    27. }
    28. }
    29. $replace .= "\n</tr>\n";
    30. }
    31. $replace .= "</table>";
    32. $string = str_replace($search, $replace, $string);
    33. }
    34. return $string;
    35. }
    36. echo bb_bericht("pre[bericht]Kampfbericht
    37. Vom: 22.05.2006 21:42
    38. Besiedlung der Insel fehlgeschlagen!
    39. Einheiten des Angreifers: 001# Kakashi (10:9:7)
    40. Gesamt Verluste
    41. Kleines Kriegsschiff 255 0
    42. Siedlungsschiff 1 0
    43. Schwertkämpfer 394 0
    44. Kanonier 6 0
    45. Legion 365 0
    46. Einheiten des Verteidigers: ~~Styl f0r 0n3~~ (9:11:16)
    47. Gesamt Verluste
    48. Kriegsschiff 3 3
    49. Siedlungsschiff 1 1
    50. Schwertkämpfer 9 9
    51. Zerstörung (Dorfzentrum) Stufe 11 > Stufe 5
    52. Plünderung ( Gold Holz Stein Nahrung )
    53. Gold 2852
    54. Stein 0
    55. Holz 2148
    56. Nahrung 0[/bericht]post[bericht]Kampfbericht
    57. Vom: 22.05.2006 21:42
    58. Besiedlung der Insel fehlgeschlagen![/bericht]post2");
    59. ?>
    Alles anzeigen
  • hi,

    ich nochmal ;)
    Also es warn noch leichte Fehler drinne... habe diese nun behoben:

    Quellcode

    1. <?
    2. function bb_bericht($string)
    3. {
    4. preg_match_all("=\[bericht\](.*)\[/bericht\]=siU", $string, $res);
    5. $count = count($res[0]);
    6. //Alle Berichte ersetzen
    7. for($i=0; $i<$count; $i++) {
    8. $search = $res[0][$i];
    9. $tmp = $res[1][$i];
    10. $tmp = explode("\n", $tmp);
    11. $replace = '<table width="400" cellspacing="0" cellpadding="3">';
    12. foreach($tmp as $line) {
    13. $replace .= "<tr>\n";
    14. //3er Spalten
    15. if(preg_match("/(Kampfbericht|Besiedlung|Einheiten|Zerstörung|Plünderung|Vom:)/i", $line))
    16. $replace .= '<td colspan="3">'.$line.'</td>';
    17. else {
    18. $line = explode(" ", $line);
    19. $k=0;
    20. foreach($line as $column) {
    21. if (count($line) == 4 && $k < 2)
    22. {
    23. if ($k++ == 0)
    24. $replace .= '<td>'.$column.' ';
    25. else
    26. {
    27. $k++;
    28. $replace .= $column.'</td>';
    29. }
    30. }
    31. else
    32. {
    33. if(count($line) == 2 && ++$k == 1 && $column != 'Gold' && $column != 'Stein' && $column != 'Holz' && $column != 'Nahrung')
    34. //2er Spalten
    35. $replace .= '<td></td><td>'.$column.'</td>';
    36. else
    37. //1er Spalten
    38. $replace .= '<td>'.$column.'</td>';
    39. }
    40. }
    41. }
    42. $replace .= "\n</tr>\n";
    43. }
    44. $replace .= "</table>";
    45. $string = str_replace($search, $replace, $string);
    46. }
    47. return $string;
    48. }
    49. echo bb_bericht("pre[bericht]Kampfbericht
    50. Vom: 22.05.2006 21:42
    51. Besiedlung der Insel fehlgeschlagen!
    52. Einheiten des Angreifers: 001# Kakashi (10:9:7)
    53. Gesamt Verluste
    54. Kleines Kriegsschiff 255 0
    55. Siedlungsschiff 1 0
    56. Schwertkämpfer 394 0
    57. Kanonier 6 0
    58. Legion 365 0
    59. Einheiten des Verteidigers: ~~Styl f0r 0n3~~ (9:11:16)
    60. Gesamt Verluste
    61. Kriegsschiff 3 3
    62. Siedlungsschiff 1 1
    63. Schwertkämpfer 9 9
    64. Zerstörung (Dorfzentrum) Stufe 11 > Stufe 5
    65. Plünderung ( Gold Holz Stein Nahrung )
    66. Gold 2852
    67. Stein 0
    68. Holz 2148
    69. Nahrung 0[/bericht]post[bericht]Kampfbericht
    70. Vom: 22.05.2006 21:42
    71. Besiedlung der Insel fehlgeschlagen![/bericht]post2");
    72. ?>
    Alles anzeigen


    Klappt auch alles.
    Jedoch weiss cih leider nicht, an welcher stelle man es in der bbcode.php datei reinschreiben muss. Kann mir da nochmal jemand helfen?

    Am besten wäre es, wenn es für ein wbb-forum wäre...
    klickst du hier

    Aber es gineg auch für das phpbb-forum...

    danke :)