Php Code mit Zeilennummern highlighten
Hier habe ich eine Funktion geschrieben, mit der man Php Code highlighten kann, und die Zeilennummern daneben anzeigen kann.
Die Funktion
| PHP-Datei: |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<?php
function highlight_php($string)
{
$Line = explode("\n",$string); //Zeilen einzeln in ein Array Laden
for($i=1;$i<=count($Line);$i++) //Zeilennummern in einer Variablen Speichern
{
$line .= " ".$i." <br>";
}
ob_start(); /* Über einen Ausgabepuffer die Ausgabe von highlight_string abfangen und einer Variablen zuweisen */
highlight_string($string);
$Code=ob_get_contents();
ob_end_clean();
// Hier wird die Ausgabe in einer header Variable gespeichert
$header='<table border="0" cellpadding="0" cellspacing="0" width="95%" style="border-style: solid; border-width:1px; border-color: white black black white">
<tr>
<td width="100%" colspan="2" style="border-style: solid; border-width:1px; border-color: white; background-color: #99ccff; font-family:Arial; color:white; font-weight:bold;">Php-Code:</td>
</tr>
<tr>
<td width="3%" valign="top" style="background-color: #99ccff; border-style: solid; border-width:1px; border-color: white;"><code>'.$line.'</code></td>
<td width="97%" valign="top" style="background-color: white;"><div style="white-space: nowrap; overflow: auto;"><code>';
// Hier wird der gehighlightete Code und die schließenden Html Tags einer Variablen zugewiesen.
$footer=$Code.'</div></code></td>
</tr>
</table>';
// Hier werden beide Variablen zurückgegeben.
return $header.$footer;
}
?>
|
Erläuterung
In der 5. Zeile sehen wir folgendes:
| PHP-Datei: |
1
2
3
|
<?php $Line = explode("\n",$string); // Zeilen einzeln in ein Array Laden ?>
|
Hier wird der Text an Hand der Escape Sequenz für einen Zeilenumbruch in einzelne Zeilen zerlegt.
| PHP-Datei: |
1
2
3
4
5
6
|
<?php for($i=1;$i<=count($Line);$i++) // Zeilennummern in einer Variablen Speichern
{
$line .= " ".$i." <br>";
} ?>
|
In der folgenden For-Schleife werden die Zeilen getrennt mit HTML-Umbrüchen einer Variablen zugewiesen.
| PHP-Datei: |
1
2
3
4
5
6
|
<?php ob_start(); /* Über einen Ausgabepuffer die Ausgabe von highlight_string abfangen und einer Variablen zuweisen */
highlight_string($string);
$Code=ob_get_contents();
ob_end_clean(); ?>
|
Hier wird nun ein Ausgabepuffer verwendet, damit die Funktion highlight_string() nicht sofort den Php Code ausgibt. Das Ergebnis der highlight_string-Funktion wird der Variablen Code zugewiesen.
| PHP-Datei: |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php // Hier wird die Ausgabe in einer header Variable gespeichert
$header='<table border="0" cellpadding="0" cellspacing="0" width="95%" style="border-style: solid; border-width:1px; border-color: white black black white">
<tr>
<td width="100%" colspan="2" style="border-style: solid; border-width:1px; border-color: white; background-color: #99ccff; font-family:Arial; color:white; font-weight:bold;">Php-Code:</td>
</tr>
<tr>
<td width="3%" valign="top" style="background-color: #99ccff; border-style: solid; border-width:1px; border-color: white;"><code>'.$line.'</code></td>
<td width="97%" valign="top" style="background-color: white;"><div style="white-space: nowrap; overflow: auto;"><code>';
// Hier wird der gehighlightete Code und die schließenden Html Tags einer Variablen zugewiesen.
$footer=$Code.'</div></code></td>
</tr>
</table>';
// Hier werden beide Variablen zurückgegeben.
return $header.$footer; ?>
|
Hier wird nun der HTML-Code für die Ausgabe der Variablen $header zugewiesen. Der Code und die schließenden Tags werden der Variablen $footer zugewiesen. Anschließend werden beide zusammengeführt und zurückgegeben.
Die Benutzung
Die Funktion kann fogenderweise benutzt werden:
| PHP-Datei: |
1
2
3
|
<?php
echo highlight_php($highlight);
?>
|
Es ist auch möglich das Ergebnis einer Variablen zuzuweisen:
| PHP-Datei: |
1
2
3
|
<?php
$var=highlight_php($highlight);
?>
|
Weiterführende Links:highlight_string()ob_start()ob_get_contents()Geschrieben von Christian am 20.02.2005 (6608x gelesen)
Ich hab die dort auch gepostet. Die is schon selbst geschrieben. Das is meine E-mail Adresse.
schade, dass es im internet explorer nicht funktioniert...
Wo steht denn der code der gehighlightet werden soll? Beispiel: <?php echo "Hallo"; ?>