.phps mit Ausgabe der Zeilennummer

tedlemegba

abgemeldet
20 April 2006
2.729
175
Hallo!

Ist es möglich in einer Config die Ausgabe der Zeilennummer bei .phps-Dateien einzustellen? Wäre relativ brauchbar. Hab' durch google nichts wirklich hilfreiches gefunden, außer lustige Workarounds, die sich's selber basteln. Das könnte und würde ich auch noch machen, aber evtl. geht's einfacher.

Die PHP-Funktionen highlight_file() und show_source() unterstützen das scheinbar auch nicht.
Danke! ^^
 
Du könntest es mit einem Hack machen ja.
Gibt ja so eine Option wo du ein Script definieren kannst das immer vor/NACH allen anderen ausgeführt wird ;) Das kannst du afaik mit nem <File> nur für phps files definieren. Und dann schreibst halt n kleines Script schreiben was die Umbaut. Müsste eigentlich mit ner .htaccess oder Config anpassung und nem kleinen Script tun.
 
Du könntest es mit einem Hack machen ja.
Gibt ja so eine Option wo du ein Script definieren kannst das immer vor/NACH allen anderen ausgeführt wird ;) Das kannst du afaik mit nem <File> nur für phps files definieren. Und dann schreibst halt n kleines Script schreiben was die Umbaut. Müsste eigentlich mit ner .htaccess oder Config anpassung und nem kleinen Script tun.

Okay, soweit dachte ich gar nicht. Mir kam eher auch die Idee mit PHP die Datei zu lesen (ggf. Dateinamenübergabe via GET und Erkennen der Dateiendung phps, allerdings bei ist bei mir scheinbar mod_rewrite nichtaktiviert) und dann mit Liniennummern auszugeben. Darauf läuft es wohl oder übel auch hinaus. Ärgerlicherweise klappt es nicht wirklich so, wie ich es mir vorgestellt habe. Ich wollte die Liniennummer wirklich mit in der Zeile haben, bisher ist das nur über eine Tabelle möglich. :| Man kann zum Beispiel auch mit ob_get_contents() arbeiten (oder sollte es)! Allerdings ist highlight_string irgendwie nicht so das Wahre und arbeitet mit \rs (\ns scheinbar nicht..). Also war das auch mal wieder nichts... sonst gibt's doppelte und dreifache Zeilenumbrüche. Ein explode via <br /> hat erst ja auch ganz gut geklappt.. nur kam mir halt irgendwann, dass das bei HTML-Code in der PHP-Datei eher schlecht kommt. Ist aber jetzt evtl. auch noch relativ früh (für mich eigentlich immer noch relativ spät). :D

Edit: mod_rewrite erfolgreich aktiviert.
Edit: hab's gleich! Ha! ^^
 
Zuletzt bearbeitet:
.htaccess
PHP:
RewriteEngine on 
RewriteRule (.*).phps phps.php?file=$1.php

phps.php

PHP:
<?
ob_start();

$file = $_GET['file']; # achtet auf die Sicherheit (siehe weiterer Post)
if(file_exists($file)) {

	$file = file($file);
	$lines = count($file); $lines = ceil(log10($lines));
	$file = implode("", $file);
	
	highlight_string($file);
	$file = ob_get_contents();
	ob_end_clean();
	
	$file = str_replace("\r<br />", "\r", $file);
	$file = explode("\r", $file);
	$file[0] = str_replace('<code>', '', $file[0]);
	
	$i = 1;
	echo "<code>";
	foreach($file as $line) {
		echo '<span style="color: #000000">', str_repeat(" ", $lines-ceil(log10($i+1))), $i, " </span> ", $line, "<br />";#, "\n";
		$i++;
	}
	
}
?>

Viel Spaß damit. ^^

Testaufruf der Datei selbst: https://www.d-ef.de/misc/phps/phps.phps
(andere Files sind gesperrt :p)


Verwendung auf eigene Gefahr!
 
Zuletzt bearbeitet:
Grrr.. sterbt doofe Whitespaces. Sehr kurioserweise geht das Ding bei einer Datei nun nicht so wirklich und ich vermute, dass es wieder an Line Feeds und schmu und schma happert. Bleibt also doch nix anderes übrig als die Variante mit der Tabelle. :|
 
denkst du auch an sicherheit? mit dem script kannste dir von jeder php datei den quelltext anzeigen lassen...
 
Nee, das geht nicht.

PHP:
#$file = $_GET['file'];
$file = 'phps.php';

Würde man die Kommentierung austauschen, dann hättest du schon recht ;)

Hehe joa.. aber vielleicht ging's ja generell darum.

denkst du auch an sicherheit? mit dem script kannste dir von jeder php datei den quelltext anzeigen lassen...

Und da ist es durchaus nicht doof den Aspekt der Sicherheit anzusprechen.
Von meiner Seite dazu: ich wollte es für mich eh nur zu Testzwecken hier auf lokal verwenden! Alle anderen, die es auch verwenden wollen, sollten sich selbständig darum kümmern, aber gut, dass du es angesprochen hast! :)
 
Öhrm, implode('', file())? Wozu gibt's file_get_contents?

Und wozu den Outputbuffer bemühen, wenn highlight_string() bzw. highlight_file() (welches btw sogar besser passen würde) einen passenden optionalen zweiten Parameter haben?

Und die Zeilennummerierung finde ich unpassend, wenn nicht entweder die Datei auch zum Download angeboten wird oder die Zeilennummern ausblendbar sind. Wenn man das nun kopieren will, hat man überall die Nummerierung davor.

Aber nix für ungut, auch wenn's nach Meckern aussieht, ist es nicht so gemeint... :)
 
Määäckern. Es war eh nur für mich gedacht und ich dachte mir halt ich bin mal so frei und poste das hier.

Das implode, weil ich vorher ein Array habe, damit ich die Zeilen zählen kann (im Voraus).
Der Outputbuffer, weil man.. hm es hatte auf jeden Fall Sinn. Entweder es hatte mit den Farben, den Zeilenumbrüche/Whitespaces oder sonstwas zu tun. Mäh.. so. Mir doch egal! ^^