login  Naam:   Wachtwoord: 
Registreer je!
 Forum

UBB [list]

Offline Skelton - 28/02/2006 15:12 (laatste wijziging 28/02/2006 15:42)
Avatar van SkeltonNieuw lid Ik heb een probleem met het parsen van de [list] tag. Hier achter zet mijn parser steeds een <br />.
nl2br(); zet de <br /> maar als ik die zou weglaten zet hij nergens nog een <br /> tag?
Hoe kan ik dit nu oplossen?

Hier is het probleem te zien: http://skelton.....php?tid=2

Dit is mijn ubb parser:
  1. <?
  2.  
  3. class ubb {
  4. function parsen($text) {
  5. $text = nl2br(htmlspecialchars($text));
  6.  
  7. $ubb = array("email1" => "/\[email\](.*?)\[\/email\]/si",
  8. "email2" => "/\[email=(.*?)\](.*?)\[\/email\]/si",
  9. "email3" => "#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i",
  10. "url1" => "#\[url\](\S+?)\[/url\]#si",
  11. "url2" => "#\[url=(\S+?)\](.*?)\[/url\]#si",
  12. "url3" => "#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i",
  13. "url4" => "#([\n ])http://www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i",
  14. "url5" => "#([\n ])http://([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i",
  15. "b" => "/\[b\](.*?)\[\/b\]/Ssi",
  16. "u" => "/\[u\](.*?)\[\/u\]/Ssi",
  17. "i" => "/\[i\](.*?)\[\/i\]/Ssi",
  18. "code" => "#\[code\](.*?)\[/code\]#si",
  19. "quote" => "#\[quote=(.*?)\](.*?)\[/quote\]#si",
  20. "quote2" => "#\[quote](.*?)\[/quote\]#si",
  21. "lijst1" => "#\[list](.*?)\[/list]#si",
  22. "lijst2" => "#\[list=1\](.*?)\[/list]#si",
  23. "lijst3" => "#\[li\](.*?)\[/li\]#si"
  24. );
  25.  
  26. $html = array("email1" => '<a href="mailto:\\1">\\1</a>',
  27. "email2" => '<a href="mailto:\\1">\\2</a>',
  28. "email3" => '<a href="mailto:\\2@\\3">\\2@\\3</a>',
  29. "url1" => '<a href="\\1" target="_blank">\\1</a>',
  30. "url2" => '<a href="\\1" target="_blank">\\2</a>',
  31. "url3" => '<a href="http://www.\\2.\\3\\4" target="_blank">www.\\2.\\3\\4</a>',
  32. "url4" => '<a href="http://www.\\2.\\3\\4" target="_blank">www.\\2.\\3\\4</a>',
  33. "url5" => '<a href="http://\\2.\\3\\4" target="_blank">http://\\2.\\3\\4</a>',
  34. "b" => '<strong>\\1</strong>',
  35. "u" => '<u>\\1</u>',
  36. "i" => '<em>\\1</em>',
  37. "code" => '<strong>Code:</strong><div class="code">\\1</div>',
  38. "quote" => '<strong>Quote:</strong><div class="quote"><em><strong>\\1</strong> schreef:</em><br />\\2</div>',
  39. "quote2" => '<strong>Quote:</strong><div class="quote">\\1</div>',
  40. "lijst1" => '<ul>\\1</ul>',
  41. "lijst2" => '<ol type="1">\\1</ol>',
  42. "lijst3" => '<li>\\1</li>'
  43. );
  44.  
  45. $txt = preg_replace($ubb, $html, $text);
  46.  
  47. return stripslashes($txt);
  48. }
  49.  
  50. }
  51. $ubb = new ubb;
  52. ?>


Alvast bedankt.

3 antwoorden

Gesponsorde links
Offline BigBug - 28/02/2006 16:31
Avatar van BigBug PHP expert De nl2br(); weghalen.. Dan zet je een <br /> achter alles, behalve bij de 'list' anders lijkt het me niet op te lossen...
Offline Skelton - 28/02/2006 20:57
Avatar van Skelton Nieuw lid Dat is geen goede oplossing om dat hij dan achter alles behalve de list een br zet.
Dus moest je dan een link in je tekst hebben staan of iets in het vet dan komt daar altijd een br achter en dat klopt niet!

Toch bedankt 
Offline MindPrison - 28/02/2006 21:29 (laatste wijziging 28/02/2006 21:29)
Avatar van MindPrison PHP gevorderde Je kan altijd dit proberen:

  1. $txt = str_replace("[/list]<br />", "[/list]", $txt);
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.226s