Hi
ich habe so ein kleine Script geschrieben und wollte nun die Sachen die
zwischen php stehen highlighten. Nur ist das nen Problem erstens wird
jedes
sprich neue Zeile angezeigt(und nicht ausgeführt) und irgendwie klappt es auch nicht das es sich nur auf die Zeilen zwischen php beschränkt.
Ich hoffe ihr könnt mir helfen.
Das ist das letzte Script was ich probiert. Habe dieses nichtmehr selbste geschrieben sondern von php.net, aber irgendwie bin ich zu doof glaub ich.
PHP-Code:
<?
class parse
{
var $text = "";
function bbcode($text)
{
$this->text = stripslashes($text); //Slashes vom escapen werden entfernt
$this->text = htmlspecialchars($this->text); //HTML wird umgewandelt
$this->text = nl2br($this->text); //
wird in jede Zeile eingefügt
$this->text = preg_replace("/\[php\](.*)\[\/php\]/esiU", "\$this->php_highlight('\\1')", $this->text); //[php]CODE
wird entfernt und weitergegeben
return $this->text; //Der Code wird zurückgegeben
}
function php_highlight($code) //Funktion zum highlighten
{
$tags = 0; //Tags werden vorerst auf 0 gesetzt
$code = $this->convert2html($code); //htmlspecialchars() wird zurückgewandelt
if(!strpos($code, "<?") && substr($code, 0, 2) != "<?") //Es wird geprüft, ob die PHP-Tags nicht vergessen wurden
{
$code = "<? ".$code." ?>"; //Wenn sie vergessen wurden, werden sie eingefügt (sonst klappts nicht mit den highlighten)
$tags = 1; //Tags werden jetzt auf 1 gesetzt, um diese später wieder zu entfernen
}
$error = error_reporting(0); //Auf 0, dass kein Parse-Errors etc. angezeigt werden
$out = highlight_string($code, true); //ganz ohne vorher zu cachen, schreiben wir den gehighliteten Code in die Variable "out"
error_reporting($error);
$out = preg_replace("/<code>(.*)<\/code>/siU", "\\1", $out); //Durch das highlighten wurden die Tags "<code>" eingesetzt, die kann man wieder entfernen
if($tags == 1) $out = preg_replace("/<\?(.*)\?>/siU", "\\1", $out); //Wenn Tags auf 1 sind, dann werden wieder die PHP-Tags entfernt
return $out;
}
function convert2html($code) //htmlspecialchars() wird zurückgewandelt
{
$code = str_replace("
", "", $code);
$code = str_replace("<", "<", $code);
$code = str_replace(">", ">", $code);
$code = str_replace(""", "\"", $code);
$code = str_replace("&", "&", $code);
return $code;
}
}
?> [/php]