print_r bereinigen
maxx33
- php
Hi,
print_r gibt ja eine Ausgabe in folgender Form.
Array (
[1] => Socken
[2] => Hemden
[3] => Krawatten
[4] => Hosen
)
Gibt es eine Möglichkeit die Ausgabe so zu bereinigen, sodass ich nur den Text erhalte?
Socken
Hemden
Krawatten
Hosen
Viele Grüße
Max
Gibt es eine Möglichkeit die Ausgabe so zu bereinigen, sodass ich nur den Text erhalte?
Sicher - aber print_r ist nicht dafür gedacht das überhaupt zu tun, es ist dafür gedacht Arrays oder Objekte in menschenlesbarer Form auszugeben.
Wenn du die Einträge der Reihe nach haben willst, bediene dich entsprechender Konstrukte oder Funktionen - foreach oder implode wären z.B. eine Möglichkeit.
Hello
Sicher - aber print_r ist nicht dafür gedacht das überhaupt zu tun, es ist dafür gedacht Arrays oder Objekte in menschenlesbarer Form auszugeben.
Wie könnte ich das trotzdem anstellen? Hintergrund ist, ich habe bereits eine fertige Funktion, die aus einer Datei Zeilen in eine andere Datei ausgibt. Funktioniert super, nur die Ausgabe müsste halt bereinigt werden.
$fh = fopen($datei, "r"); # diese datei einlesen
$start = 13; # von zeile
$end = 40; # bis zeile
$result = array(); # hier stehen die zeilen drin
$count = 0;
while(!feof($fh)) { # auslesen
$row = fgets($fh);
if($count >= $start && $count <= $end) $result[] = $row;
$count++;
}
fclose($fh);
# anzeigen
print_r($result);
?>
Hi!
Sicher - aber print_r ist nicht dafür gedacht das überhaupt zu tun, es ist dafür gedacht Arrays oder Objekte in menschenlesbarer Form auszugeben.
Wie könnte ich das trotzdem anstellen?
Hintergrund ist, ich habe bereits eine fertige Funktion, die aus einer Datei Zeilen in eine andere Datei ausgibt. Funktioniert super, nur die Ausgabe müsste halt bereinigt werden.
Indem du zunächst ein Muster suchst, nachdem du die überflüssigen Stellen erkennen kannst, um sie dann mit nichts zu erstetzen oder anderweitig rauszuschneiden. Aber wozu den Aufwand betreiben, wenn du mit einer Foreach-Schleife und einem echo in zwei Zeilen die Ausgabe gleich so erzeugst, wie du sie brauchst. Das erste Beispiel auf der verlinkten Seite unter der Warnung mit dem Verkehrsschild ist ungefähr das was du brauchst.
Lo!
Das hört sich alles gut an, nur möchte ich nicht die gesamte Datei ausgeben, sondern nur einen Teil, z.B. Zeile 13 bis 50
Gruß
maxx33
Hi!
Das hört sich alles gut an, nur möchte ich nicht die gesamte Datei ausgeben, sondern nur einen Teil, z.B. Zeile 13 bis 50
Dann kannst du beim Ausgeben eine Bedingung angeben: Wenn im Bereich, dann ausgeben.
Oder du reduzierst vorher die Datenmenge im Array, indem du mit einer geeigneten Array-Funktion einen Teil davon herausschneidest (z.B. slice und splice).
Lo!
Wie könnte ich das trotzdem anstellen?
Indem du den Rückgabewert der Funktion an eine helferfunktion weitergibst die den Inhalt zeilenweise zerlegt, die erste und letzte Zeile wegwirft, und mit Zeichenkettenfunktionen nach '=> ' sucht und alles dahinter ausgibt. [1]
Der Sinn dahinter erschließt sich mir nicht ganz.
Hintergrund ist, ich habe bereits eine fertige Funktion, die aus einer Datei Zeilen in eine andere Datei ausgibt.
Schön - ich verstehe den Sinn dahinter immer noch nicht.
Funktioniert super, nur die Ausgabe müsste halt bereinigt werden.
Wenn du das willst - eine 10-zeilige Funktion zu schreiben wenn es einem 1-Zeiler auch geht.
Den Hinweis auf implode() hast du jetzt bereits 2x erhalten - meinst du nicht, dass du in diese Richtung nachforschen solltest, bevor du dich ins Unglück stürzt?
[1] Meinetwegen auch per PCRE-Funktion (z.B. preg_match_all) der dir daraus wieder ein Array baut welches du dann mit print_r ausgeben lässt (vorher natürlich bereinigt) - oh nein, Rekursion!
Mahlzeit maxx33,
Gibt es eine Möglichkeit die Ausgabe so zu bereinigen, sodass ich nur den Text erhalte?
Wie wär's mit implode('\n', $array);
?
MfG,
EKKi