Hoi allemaal, ik ben bezig met een UBB parser om regexes te leren. dikgedrukt en dergelijke is allemaal geen probleem, maar ik kom er niet uit met PHP binnen de regex.

Hij gooit de hele boel steeds door elkaar, waardoor kom ik niet achter nog. (de php string komt steeds vooraan te staan en niet op de plek waar die zou moeten)

<?php
/**
 * @author Robert Deiman
 * @company Prodes
 * @copyright 2008
 */

$bericht = 'bladiebla
[b]Dikgedrukt[/b]
<? 
//dit is een voorbeeld van een php stukje; 
function_test($variabele){
	return $variabele;
	}
?>
[i]Cursief[/i]
bladiebla';
$bericht = preg_replace('#\<\?(.*?)\?>#ise',"highlight_string('<?php \\1 ?>')",$bericht);
$bericht = preg_replace('#\[b\](.+?)\[/b\]#is','<strong>\\1</strong>',$bericht);
$bericht = preg_replace('#\[i\](.+?)\[/i\]#is','<em>\\1</em>',$bericht);

echo $bericht;
?>

Voorbeeld van output:
http://www.robertdeiman.net/phphulp/ubb.php

edit

De vraag voor de duidelijkheid:
Hoe zorg ik dat de php code wel op de juiste plek blijft staan?
Dat komt door de functie highlight_string(), deze output het resultaat direct. Geef de boolean true als tweede parameter aan deze functie mee, dan zal het resultaat als string teruggegeven worden, precies zoals jij wilt.

Zie ook: [php]highlight_string[/php]
Super, dankjewel.. :)

Het is toch makkelijker dan ik dacht, maar heb echt lopen zoeken om het te vinden.

Reageren