Syntax Highlighting

$text = preg_replace("/\[code\](.*)\[\/code\]/Usi", "<div class=\"code\">".highlight_string("\\1")."</div>", $text); //kann nicht funktionieren

Wie kann ich den String, der zwischen den codes - (.*) - hightlighten?

danke

$text = preg_replace("/\[code\](.*)\[\/code\]/Usi", "\\1", $text);
$text = "<div class=\"code\">".highlight_string($text)."</div>";

:wink:

highlight_string() gibt standardmäßig den text an den Browser aus. d.h. man muss zusätzlich den zweiten Parameter auf true setzen, damit die Ausgabe via “return” zurückgegeben wird und der Text dann in der variable landet.

$text = preg_replace("/\[code\](.*)\[\/code\]/Usi", "\\1", $text);
$text = "<div class=\"code\">".highlight_string($text, true)."</div>";

//Edit so klappt das ja auch nicht >_> momento
//Edit 2:

[code]<?php

$text = 'dies ist mein php code:

<?php echo \'blubb\'; for($n=0;$n<count($array);$n++){ echo "blabb "; echo $n."\n"; } ?>
und noch einer:

<?php if($xyz=="abcd"){ echo "Hans Wurst"; } ?>';

preg_match_all(’/[code](.*)[/code]/Usi’, $text, $ret, PREG_SET_ORDER);
foreach($ret as $r){
$text = str_replace($r[0], highlight_string($r[1],true),$text);
}

echo nl2br($text);

?>[/code]

//Edit 3:
ist ne unschöne Methode… ich empfehle dir:
christian-seiler.de/projekte/php/bbcode/

Damit funktioniert es jedenfalls so wie man es haben will :slight_smile:

mfg Balmung