Hallo,
ich erstelle über php dynamisch eine htmlseite. weiter habe ich textfiles mit codefragmenten und genau die will ich auf meiner HTML seite darstellen. ist bisher kein problem, das ganze ist aber immer einfarbig. was ich suche ist ein php-modul das meinen sourcecode im textfile in farbiges (syntax highlighted) html umwandelt.
Versuche es mit der PHP 4-Funktion highlight_string(), welche ab Version 4.2.0 einen optionalen Parameter (true/false) hat, um das Ergebnis an eine Variable uebergeben zu koennen.
Da die Funktion fuer PHP-Code gedacht ist, muss man etwas tricksen und jede Zeile in "<? ... ?>" huellen und hinterher die Hilfszeichen wieder entfernen.
Ein einfaches Beispiel:
externe Textdatei test.txt:
function blaBlub()
{
var x,y;
x="Hallo";
y="Welt!";
alert(x+" "+y);
}
PHP-Skript test.php:
<?php
$code=file_get_contents("test.txt");
$codelines=explode("\n",$code);
for($i=0;$i<count($codelines);$i++)
{
$codeline=$codelines[$i];
$codeline=highlight_string("<?".$codeline."?>",true);
$codeline=str_replace("<?","",$codeline);
$codeline=str_replace("?>","",$codeline);
print $codeline."<br>";
}
?>
Damit werden die Codeteile farbig dargestellt. Das Prinzip funktioniert mit typischen Bezeichnern im Rahmen von diversen Sprachen. Der erzeugte Code ist etwas krude, aber man kann mit einigen Stringoperationen Ordnung schaffen, z. B. <font color="..."> gegen <span class="..."> ersetzen, die code-Elemente entfernen und alles mit pre umschließen usw.
Ich verwende diese Technik zur Ausgabe von SVG-Code (also XML), der zum Teil auch JavaScript-Fragmente enthaelt, siehe z. B.: http://svglbc.datenverdrahten.de/?code=funktionsplotter.
MfG, Thomas