php-Datei auslesen und formatiert ausgeben
Hallo nochmal,
ich hatte vorgehabt, bestimmte php-Codedateien auszulesen und in einem DIV-Container auszugeben, damit die User den Quellcode eines php-Programms einlesen können.
Mit den folgenden Code lese ich die Datei ein:
Um die Kommentare übersichtlich darzustellen, habe ich diese mithilfe von "preg_replace()" ausformatiert:
Und nun zum Problem: Wie bekomme ich die Whitespaces ausgegeben. In der Original-Datei befinden sich sämtliche Einrückungen, die im Browser leider nicht ausgegeben werden.
Mein Versuch:
Geht leider nur für die erste Zeile; der Rest bleibt gleich. Habt ihr viellciht eine Idee?
ich hatte vorgehabt, bestimmte php-Codedateien auszulesen und in einem DIV-Container auszugeben, damit die User den Quellcode eines php-Programms einlesen können.
Mit den folgenden Code lese ich die Datei ein:
$arr_file = file($file);
foreach($arr_file as $line) {
$output .= sprintf(" %s <br />", $line);
}
Um die Kommentare übersichtlich darzustellen, habe ich diese mithilfe von "preg_replace()" ausformatiert:
$line = preg_replace("/^(\/\/)\s(.*)$/U", "<span style=\"color:#003151; font-weight:bold\">\\1 \\2</span>", htmlentities($line));
Und nun zum Problem: Wie bekomme ich die Whitespaces ausgegeben. In der Original-Datei befinden sich sämtliche Einrückungen, die im Browser leider nicht ausgegeben werden.
Mein Versuch:
$line = str_replace(" ", " ", $line);
Geht leider nur für die erste Zeile; der Rest bleibt gleich. Habt ihr viellciht eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103578
Url: https://administrator.de/contentid/103578
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
6 Kommentare
Neuester Kommentar
Schau dir doch mal PHP-Manual - highlight_string() und PHP-Manual highlight_file() an, die nehmen dir die ganze Arbeit ab :wink:
~Arano
~Arano
Hm... hab mir mal was gebastelt, und da funktioniert es - wie erwartet.
php.php - auszugebenes PHP
index.php - die verarbeitende datei
ausgabe
Wobei man die Datei auch gleich mit highlight_file() einlesen könnte... viel mir aber eben erst ein ^^
~Arano
EDIT:
Auch mit mehreren Leerzeichen hintereinander in dem Echo hat es funktioniert.
php.php - auszugebenes PHP
<?php
// ein kommentarchen
echo 'Ein echo.. HALLOOOO ECHOOOO ;)';
$zahl=145;
if(isset($zahl)&&$zahl==145){
echo 'Oho, ein Hellseher'
}
?>
<?php
$datei=file('./php.php');
$oput='';
foreach($datei as $zeile)
$oput.=$zeile;
highlight_string($oput);
?>
<span style="color: #000000">
<span style="color: #0000BB"><?php
<br /> </span><span style="color: #FF8000">// ein kommentarchen
<br /> </span><span style="color: #007700">echo </span><span style="color: #DD0000">'Ein echo.. HALLOOOO ECHOOOO ;)'</span><span style="color: #007700">;
<br /> </span><span style="color: #0000BB">$zahl</span><span style="color: #007700">=</span><span style="color: #0000BB">145</span><span style="color: #007700">;
<br /> if(isset(</span><span style="color: #0000BB">$zahl</span><span style="color: #007700">)&&</span><span style="color: #0000BB">$zahl</span><span style="color: #007700">==</span><span style="color: #0000BB">145</span><span style="color: #007700">){
<br /> echo </span><span style="color: #DD0000">'Oho, ein Hellseher'
<br /> </span><span style="color: #007700">}
<br /></span><span style="color: #0000BB">?></span>
</span>
~Arano
EDIT:
Auch mit mehreren Leerzeichen hintereinander in dem Echo hat es funktioniert.