Luzie
Erfahrenes Mitglied
Hallo
ihr müsst mir mal kurz einen Tipp geben. Mit dieser Funktion lasse ich einen highlight-string erzeugen. Das ist auch kein Problem.
Wie könnte ich es aber jetzt anstellen, den Text, der außerhalb der php-Tags[] steht zu encodieren z.b. mit htmlentities(), so dass der Scriptcode, der innerhalb der php-Tags steht, nicht berücksichtigt wird?
Ich probiere da jetzt schon seit geraumer Zeit hin- und her.
Wie macht ihr das?
ihr müsst mir mal kurz einen Tipp geben. Mit dieser Funktion lasse ich einen highlight-string erzeugen. Das ist auch kein Problem.
Wie könnte ich es aber jetzt anstellen, den Text, der außerhalb der php-Tags[] steht zu encodieren z.b. mit htmlentities(), so dass der Scriptcode, der innerhalb der php-Tags steht, nicht berücksichtigt wird?
Ich probiere da jetzt schon seit geraumer Zeit hin- und her.
Wie macht ihr das?
PHP:
function php_string($a)
{
$tag = false;
if (!strstr($a, "<?") && !strstr($a, "?>")) {
$a = "<?\n".$a."\n?>";
$tag = true;
}
$a = stripslashes($a);
$a = str_replace("\\\"","\"",$a);
$a = trim($a);
ob_start();
highlight_string($a);
$a = ob_get_contents();
ob_end_clean();
// ...und wieder entfernen
if ($tag) {
$a = str_replace("<?", "", $a);
$a = str_replace("?>", "", $a);
}
return "<i>Code:</i><div style=\"width:800px;overflow:auto;margin-left:10px;background-color:#f5f5f5;border:1px outset;\">$a</div>";
}
function bbcode($msg)
{
$msg = preg_replace("/\[php\](.*)\[\/php\]/esiU","php_string('$1')", $msg);
$msg = eregi_replace("\[B\]([^\[]+)\[/B\]", "<b>\\1</b>", $msg);
$msg = str_replace( "\n","<br/>",$msg);
return $msg;
}