-
Doppio preg_replace
Ho questo script per il mio forum:
Codice PHP:
$testo=preg_replace("#\[quote=(\S+?)\](.*?)\[/quote\]#i", "<div style=\"background-color: #555555; width: 75%; border-style: groove\">\\2</div>", $testo);
Lo uso per i "quote", volevo sapere come posso fare per far funzionare un quote dentro l'altro. Usando il mio metodo conta solo il primo quote d'apertura e il primo che trova di chiusura.
-
Sicuramente si può fare meglio, ma io uso questo:
Codice PHP:
$trg_testo=preg_replace("/(\[QUOTE\]){1,}(.)+?/s","<table width=\"95%\" border=\"0\" align=\"center\" cellpadding=\"3\" cellspacing=\"1\" class=\"tabcat\" id=\"tabquota\">
<tr><td class=\"tabquote\"><span class=\"testo11\">\\2",$trg_testo); //Quote
$trg_testo=preg_replace("/(\[\/QUOTE\]){1,}/s","</td></tr>\n</table>",$trg_testo); //chiusura quote
Se non trovi niente di meno rozzo al max puoi usare questo ;)
Ciaooooo!!!!!!
-
Non l'ho ancora provato, ma se il "quote" d'apertura è scritto correttamente e quello di chiusura no, il primo preg_replace va?
-
mmm sto pensando... come fare che dentro i ci possa essere un altro [/QUOTE] ...
la mia domanda ora è esplicita, cioè visto che è in argomento, a me interesserebbe la soluzione a questo problema e non solo un alternativa... anche perchè il (.*) dovrebbe indicare qlsiasi carette tranne l'acapo... sto pensando...