login  Naam:   Wachtwoord: 
Registreer je!
 Forum

UBB parser: quote binnen quote (Opgelost)

Offline mikeos - 04/12/2008 20:24
Avatar van mikeosNieuw lid Ik ben bezig om een UBB parser te maken voor mijn forum.
Het moet mogelijk zijn om eerder geplaatste berichten te quoten.
Nu wil ik deze berichten graag op de volgende manier parsen:

  1. $bericht = preg_replace("[quote=(.+?)]", "<center><table width=90%><tr><td>Quote:<br><hr color=\"#FFFFFF\" size=1 width=100%></td></tr><tr><td><b>\\1 schreef:</b></td></tr><tr><td>", $bericht);
  2.  
  3. $bericht = str_replace("[/quote]", "</td></tr><tr><td><hr color=\"#FFFFFF\" size=1 width=100%></td></tr></table></center>", $bericht);


Het probleem van deze manier van parsen is dat \\1 (dus de poster van het te quoten bericht) maar uit één letter bestaat.
Heb al verschillende mogelijkheden geprobeerd, maar geen enkele met een succesvol resultaat.

Hopelijk dat iemand van jullie mij verder kan helpen met dit probleem!

6 antwoorden

Gesponsorde links
Offline Martijn - 04/12/2008 20:34
Avatar van Martijn Crew PHP je bent op de hoogte van het feit dat als je ergens een tabel gebruikr, en je zet alleen [/quote] neer, dat de user een einde kan maken aan die tabel?
Offline mikeos - 04/12/2008 20:37
Avatar van mikeos Nieuw lid
DeviourSoul schreef:
je bent op de hoogte van het feit dat als je ergens een tabel gebruikr, en je zet alleen
neer, dat de user een einde kan maken aan die tabel?[/quote]

Mmm.. Hier heb je natuurlijk een punt, op die manier had ik het nog niet bekeken.

Heb je dan misschien een andere suggestie voor me?

Offline Martijn - 04/12/2008 20:42
Avatar van Martijn Crew PHP
  1. $bericht = preg_replace("[quote=(.*)](.*)[/quote]", "<table width=90% align=\"center\"><tr><td>Quote:<br><hr color=\"#FFFFFF\" size=1 width=100%></td></tr><tr><td><b>\\1 schreef:</b></td></tr><tr><td colspan=\"2\">\\2</td></tr></table>", $bericht);


en je fout opgelost, en je center verbeterd, daz evil code, en t pakt t beter met je einde
Offline Richard - 04/12/2008 22:04
Avatar van Richard Crew algemeen Echt, ooit van zoeken gehoord? Sodeju...

http://www.site...e_in_Quote

Alleen al hier op het forum staan genoeg posts met dit onderwerp, laat staan op de rest van het internet.
Offline mikeos - 04/12/2008 23:25
Avatar van mikeos Nieuw lid @JeXuS
Het topic waarna jij me verwees bevat dezelfde vraag, maar geeft ook geen voor mij bruikbaar antwoord op mijn vraag.

Verder heb ik mijn best gedaan om een oplossing voor het probleem te vinden, maar de zoektocht was tevergeefs.

De code die DeviourSoul mij aanbeveelt werkt niet.
Ik krijg de volgende foutmelding:
Warning: preg_replace() [function.preg-replace]: Unknown modifier '(' in................

Hopelijk dat iemand anders mij verder kan helpen?
Offline Richard - 05/12/2008 15:32
Avatar van Richard Crew algemeen Verdorie zeg, zeg dan _wat_ er niet werkt!

  1. <?php
  2.  
  3. function renderQuotes($text) {
  4. $functionName = __FUNCTION__;
  5. // als het een match is van preg_replace_callback
  6. if(is_array($text)) {
  7. // hier de verwerking van een quote eromheen
  8.  
  9. return '<blockquote>' . (strlen($text[1]) > 1 ? substr($text[1], 1) . ' schreef:<br />' : '') . $functionName($text[2]) . '</blockquote>';
  10. } else {
  11. // hier heb je directe input, return met preg_replace_callback
  12. return preg_replace_callback('~\[quote(=[^]]+)?]((?:(?R)|.)+?)(?:\[/quote]|$)~si', $functionName, $text);
  13. }
  14. }
  15.  
  16. echo renderQuotes('[quote]bla[quote=mikeos]bla[/quote]bla[/quote]');
  17. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.194s