login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[code] probleem...

Offline Lennard - 04/02/2006 19:27 (laatste wijziging 04/02/2006 19:47)
Avatar van LennardPHP interesse Hallo,

Hieronder een gedeelte van m'n UBB systeem:
  1. <?php
  2.  
  3. function xhtmlcode($str)
  4. {
  5. $font = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $str);
  6. $ret = preg_replace('#color="(.*?)"#', 'style="color: \\1; font-family:Verdana; font-size:11px;"', $font);
  7.  
  8. return $ret;
  9. }
  10.  
  11. function ubb($in)
  12. {
  13. $in = stripslashes($in);
  14. $in = htmlspecialchars($in);
  15. $in = nl2br($in);
  16.  
  17. $in = preg_replace("_\[code\](.*?)\[/code\]_ise", "code('\\1')", $in); //[code ] tag Replaces
  18.  
  19. /* UBB Replaces */
  20. /*-----------------------------------------------------------------------------------*/
  21. $input = array("#\[(b|strong)\](.*?)\[\/(b|strong)\]#si",
  22. "#\[(i|em)\](.*?)\[\/(i|em)\]#si",
  23. "#\[u\](.*?)\[\/u\]#si",
  24. "#\[(s|strike)\](.*?)\[\/(s|strike)\]#si",
  25. "#\[url\]((http|https|ftp)://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\[/url\]#is", //[url]xx://www.***.nl.nl[/url]
  26. "#\[url\]((www|www1|www2|www3|www4|www5)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\[/url\]#is", //[url]www.***.nl[/url] (zonder xx://)
  27. "#\[url=((http|https|ftp)://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is", //[url=xx://www.***.nl]***.nl[/url]
  28. "#\[url=((www|www1|www2|www3|www4|www5)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is", //[url=www.***.nl]***.nl[/url] (zonder xx://)
  29. "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si",
  30. "#\[email=([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\](.*?)\[\/email\]#si");
  31.  
  32. $output = array("<strong>\\2</strong>",
  33. "<em>\\2</em>",
  34. "<u>\\1</u>",
  35. "<strike>\\2</strike>",
  36. "<a href='\\1' target='_blank'>\\1</a> ",
  37. "<a href='http://\\1' target='_blank'>\\1</a>",
  38. "<a href='\\1' target='_blank'>\\3</a>",
  39. "<a href='http://\\1' target='_blank'>\\3</a>",
  40. "<a href='mailto:\\1'>\\1</a>",
  41. "<a href='mailto:\\1'>\\3</a>");
  42.  
  43. $in = preg_replace($input, $output, $in);
  44. /*-----------------------------------------------------------------------------------*/
  45. /* UBB Replaces */
  46.  
  47. return $in;
  48. }
  49.  
  50. function code($code)
  51. {
  52. $code = str_replace("<br />", "", $code); //Om te zorgen voor goede weergave ivm. nl2br bij ubb();
  53. $code = html_entity_decode($code);
  54. $code = trim($code);
  55. $code = @highlight_string($code, true);
  56.  
  57. $code = xhtmlcode($code); //Om font te veranderen in <span style='.... en lettertype als verdana
  58.  
  59. $regels = explode("<br />", $code);
  60. $nummers = count($regels);
  61.  
  62. $blok = "<table bgcolor='#f1f5f6' cellpadding='3' cellspacing='0' style='border:1px solid #3f7082;' width='506'>
  63. <tr>
  64. <td width='100%'><div style='overflow:auto; overflow-x:scroll; width:500px;'>
  65. <table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse;' width='100%'>
  66. <tr>
  67. <td width='100%' colspan='2' bgcolor='#deecf1' style='font-family:Verdana; font-size:11px; font-weight:bold; padding:2px;'>C o d e</td>
  68. </tr>
  69. <tr>
  70. <td width='25' nowrap valign='top' bgcolor='#f1f5f6' style='font-family:Verdana; font-size:11px;'>";
  71. for($i=1; $i<=$nummers; $i++)
  72. {
  73. $blok .= $i."<br />\n";
  74. }
  75. $blok .= " </td>
  76. <td width='100%' nowrap valign='top' bgcolor='#f1f5f6' style='font-size:12px;'>".$code."</td>
  77. </tr>
  78. </table>
  79. </div></td>
  80. </tr>
  81. </table>";
  82.  
  83. return $blok;
  84. }
  85.  
  86.  
  87. if(!isset($_POST['submit']))
  88. {
  89. echo "<form method='post'>
  90. <textarea style='width:506px; height:150px;' name='code'></textarea><br />
  91. <input type='submit' name='submit' value='Highlight code!' />
  92. </form>";
  93. } else {
  94. echo "<form method='post'>
  95. <textarea style='width:506px; height:150px;' name='code'>".htmlspecialchars(stripslashes($_POST['code']))."</textarea><br />
  96. <input type='submit' name='submit' value='Highlight code!' />
  97. </form><br />";
  98.  
  99. echo ubb($_POST['code']);
  100. }
  101. ?>

Nu heb ik een probleem:
Als je bijvoorbeeld [code*][b*]test[/b*][/code*] doet, dan zet hij die [b*] en [/b*] om in resp. <b> en </b>.
Hoe kan ik ervoor zorgen dat hij die dan over slaat?

Dus dat hij gewoon [b*]test[/b*] laat zien in de code-box?

BVD,

Lennard.

Edit:
Zie www.lennardesveld.com/ubb.php voor beter weergave.


Medewerker edit:
Gebruik de [code ]-tags .

2 antwoorden

Gesponsorde links
Offline Richard - 04/02/2006 19:43
Avatar van Richard Crew algemeen 2 oplossingen:

1) stackbased parsen

2) eerst alle code blokken de content ophalen met preg_match_all. dan bij het terugzetten de originele content er weer in plaatsen
Offline Lennard - 04/02/2006 20:39
Avatar van Lennard PHP interesse Zou je misschien van die tweede optie een voorbeeld willen maken?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.175s