Goeiedag GoT,
Door gebruik te maken van de preg_replace(pattern, replacement, subject) * functie heb een eenvoudige UBB-parser gemaakt voor mijn website.
(*klik)
Eerst stonden pattern & replacement in verschillende array, maar op dezelfde plaats...
(subject is een string)
voorbeeld : (zonder gebruik te maken van de opmaak die nodig is voor preg_replace() )
Output : test & test
Dit werkt perfect.
Nu zou ik ipv elke UBB-code in mijn pagina te zetten(wat heel rommelig overkomt en zorgt voor verwarring), graag alle codes in een MySQL tabel hebben, met 2 kolommen, 1tje voor de UBBcode en 1tje waar de HTML in staat.
Ik lees alle waarden in met een while loop :
De preg_replace() functie vervangt de ubbcode nog wel, maar door de letterlijke inhoud van de overeenkomstige cel in de 'vervang' kolom van de tabel.
Dus bij dezelfde tags als in het voorbeeld bovenaan is de output :
woord & woord
Heeft iemand hier een oplossing voor? Kan de functie niet werken met waarden die uit een tabel komen? Is er dan 1 die dat wel kan?
Door gebruik te maken van de preg_replace(pattern, replacement, subject) * functie heb een eenvoudige UBB-parser gemaakt voor mijn website.
(*klik)
Eerst stonden pattern & replacement in verschillende array, maar op dezelfde plaats...
(subject is een string)
voorbeeld : (zonder gebruik te maken van de opmaak die nodig is voor preg_replace() )
PHP:
1
2
3
4
5
6
7
8
9
| $subject = "[b]test[/b] & [i]test[/i]"; $pattern = array( [1] => "[b]woord[/b]", [2] => "[i]woord[/i]" ); $replacement = array( [1] => "<b>woord</b>", [2] => "<i>woord</i>" ); $text_out = preg_replace($pattern, $replacement, $subject); echo $text_out; |
Output : test & test
Dit werkt perfect.
Nu zou ik ipv elke UBB-code in mijn pagina te zetten(wat heel rommelig overkomt en zorgt voor verwarring), graag alle codes in een MySQL tabel hebben, met 2 kolommen, 1tje voor de UBBcode en 1tje waar de HTML in staat.
Ik lees alle waarden in met een while loop :
PHP:
Nu komt het probleem :1
2
3
4
5
6
7
| $sql = "SELECT * FROM `ubb-code`"; $qresult = mysql_query($sql); while($waarde = mysql_fetch_array($qresult)) { $text_out = preg_replace($waarde[ubbcode], $waarde[vervang], $subject); } echo $text_out; |
De preg_replace() functie vervangt de ubbcode nog wel, maar door de letterlijke inhoud van de overeenkomstige cel in de 'vervang' kolom van de tabel.
Dus bij dezelfde tags als in het voorbeeld bovenaan is de output :
woord & woord
Heeft iemand hier een oplossing voor? Kan de functie niet werken met waarden die uit een tabel komen? Is er dan 1 die dat wel kan?
[ Voor 6% gewijzigd door Elvis op 14-04-2006 11:33 ]