Hallo Fabian,
Dein Ansatz ist ok. Im Vergleich von explode(), split() und preg_split() ist explode() sie schnellste Methode und sollte deshalb bevorzugt zum Einsatz kommen. Strings innerhalb von doppelten Anfuehrungszeichen werden evaluiert, Strings in einfachen Anfuehrungszeichen einfach durchgereicht, deshalb sind einfache Anfuehrungszeichen, wenn immer moeglich, vorzuziehen. Um volle Kompatibilitaet mit Windows sicherzustellen, empfiehlt es sich, im 2. fopen()-Argument entweder b (=binary) oder t (=text) mitzugeben, siehe Manual bei fopen(). Ueberhaupt frage ich mich, warum du die Datei nicht mit file() einliest, das gleich ein Array zurueckgibt. Dabei ist aber zu beachten, dass du, wenn du die Werte des Arrays (=Zeilen der Datei) bearbeitest, trim() anwenden musst, da file() immer ein paar \n oder \0 am Zeilenende mitschleppt. Mit file() waerst du gleich hier:
foreach($lines as $line)... und muesstest evtl. mit einem if checkecken, ob der Eintrag der Zeile deinen Kriterien entspricht.
Ich halte es fuer eleganter, anstatt jede Zeile mit einem echo auszugeben, hier -> echo "<table border="1">\n"; einen String mit dem gleichen Inhalt anzufangen, und in der foreach Schleife dann die Werte so anzuhaengen:
$table = "<table border="1">\n";
foreach($lines as $line)
{
$_line_parts = explode("|", $line);
$table .= "\t<tr><td>Vorname:</td><td><strong>".$_line_parts[1]."</strong></td></tr>\n"
. "\t<tr><td>Nachname:</td><td><strong>".$_line_parts[2]."</strong></td></tr>\n"
. "\t<tr><td>Nachricht:</td><td><strong>".$_line_parts[3]."</strong></td></tr>\n"
. "\t<tr><td colspan="2"> </td></tr>\n";
}
Das gilt auch analog fuer die anderen echos, Der Vorteil ist, dass du am Schluss die fertige Tabelle in einer Variablen hast, die du sauber im HTML-Code unterbringen kannst (Trennung von Code und Ausgabe, aehnlich wie die Trennung von HTML und CSS). Konkatinieren (mit . aneinanderhaengen) wie im Beispiel, geht auch mit print(), echo etc., sodass man nicht immer sie Funktion neu aurufen muss.
Persoenlich mag ich auch \t nicht, weil jeder Editor eine andere Auffassung von Tabluatoren hat. Mit Leerzeichen (ich nehme 2) ist gewaehrleistet, dass der Code ueberall gleich aussieht (hoffentlich zumindest).
Aber Dein Script wird durch diese Optimierungen natuerlich nicht rasend schnell, da es ohnehin sehr klein ist und kaum was zu tun hat.
Gruß,
Dieter