wanneer ik een enkel bericht quote gaat het prima. Maar wanneer ik een bericht quote waar al een quote in staat dan gaat het fout.
Zoals dit:
[quote]
[quote]eerste tekst in de quote[/quote]
de tekst die wordt geleverd om op de bovenstaande quote te reageren[/quote]
Logisch dat hij fout gaat, hij pak de eeste quote open tag en zoekt naar de eerste quote sluit tag, maar dat moet hij niet doen, hij moet de laatste pakken.
Als voorbeeld kan ik een link geven van mijn websiteje waar het fout gaat:
vrij simpel ik dacht te moeilijk. ik moest alleen de open en dicht tags van de quotes in een aparte preg_replace zetten. Nu doet hij het naar mijn zin. sorry voor de onnodige post.
. Omdat er bij een quote in een quote de tags van het openen en het sluiten van de verschillende quotes door elkaar heen lopen:
[quote] [quote][/quote] [/quote]
Kan hij de string die je opgeef in de preg_replace maar 1 keer vinden. Wanneer je de string in de preg_replace splitst, dus 1 preg_replace voor de open quote tag en 1 preg_replace voor de sluit quote tag, kan de quote wel goed omzetten naar de gewenste lay-out.
Nu heb ik twee preg_replaces gemaakt, 1 voor de open tag, 1 voor de sluit tag (wat goed is):
Roeland, die methode heb ik ook vroeger vaak gebruikt, maar is toch niet echt ideaal:
Stel: Je hebt je layout in divjes (kan ook tabellen, maar daar heb ik het niet over.. doe maar divjes :P) en je quote-dingen heb je ook in divjes. Stel nu dat iemand zoiets typt:
[quote]Dit is 1 quote[/quote]
Och neen, ik heb een quote teveel afgesloten
[/quote]
Wat denk je dat er met je layout gebeurd? En de mensen die zo'n layout zien?
Nu is er een andere oplossing voor jouw probleem:
<?php
while(preg_match('#\[quote\](.*?)\[/quote]\#', $tekst))
{
$tekst = preg_replace('#\[quote\](.*?)\[/quote]\#', '<div>Quote: $1</div>', $tekst);
}
// Dit stukje is niet getest (zoiets heb ik wel.. dus de opzet is goed)
?>
[edit]
Dit is eigenlijk ook de code die Erik poste (niet over genomen hoor ;-) maar werkt hetzelfde)
Ik denk dat ik een beetje lang aan het typen was :P
[/edit]