Einer Textdatei etwas am Anfang hinzufügen
SiWi
- php
0 dedlfix0 Guma-1 Joachim0 Vinzenz Mai0 Joachim
0 Thoralf Knuth
Ich hab die PHPmanual durchsucht, aber nichts gefunden.
Wie fügt man bei einer Textdatei in PHP am Anfang etwas hinzu?
Also wie wenn man eine Datei mit fopen(irgentwas.txt, a) öffnet bloß, dass man etwas am Anfang hinzufügt.
echo $begrüßung;
Wie fügt man bei einer Textdatei in PHP am Anfang etwas hinzu?
Diese Funktionalität gibt es nicht in PHP.
Öffne eine neue Datei, schreibe den Anfang und hänge den Inhalt der anderen Datei an.
echo "$verabschiedung $name";
Für mich gäbe es noch eine andere Möglichkeit, um mein vorhaben zu realisieren. Nämlich zuerst die letzte Zeile auszulesen, dann die vorletzte usw. Wie geht das?
Hi,
Für mich gäbe es noch eine andere Möglichkeit, um mein vorhaben zu realisieren. Nämlich zuerst die letzte Zeile auszulesen, dann die vorletzte usw.
Der fopen-Parameter "a" erlaubt Dir das Anhängen von Text. Auslesen kannst Du einfach mit file(). Den zurückgegebenen Array sortierst Du dann rückwärts.
http://de.php.net/manual/de/function.fopen.php
http://de.php.net/manual/de/function.file.php
http://de.php.net/manual/de/function.rsort.php
Gruesse, Joachim
Hallo Joachim,
Der fopen-Parameter "a" erlaubt Dir das Anhängen von Text. Auslesen kannst Du einfach mit file(). Den zurückgegebenen Array sortierst Du dann rückwärts.
http://de.php.net/manual/de/function.rsort.php
wie wäre es statt dessen mit array_reverse()?
Freundliche Grüße
Vinzenz
Hi Vinzenz,
wie wäre es statt dessen mit array_reverse()?
stimmt, rsort sortiert die values... jaja, Dokus sollte man nicht nur verlinken sondern auch lesen ;-)
Gruesse, Joachim
Hello,
wie wäre es statt dessen mit array_reverse()?
Das wäre insbesondere bei großen Arrays schon deshalb intelligenter, da hier nur Anfangs- und Endanker der Kette vertauscht werden zu brauchen. "Next" wird dann zu "Previous" und um gekehrt, aber auch das ist für PHP nicht zu schwer ;-))
Es kostet auf jeden Fall wesentlich weniger Rechenzeit.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Ich habe jetzt folgenden Code erstellt:
<html>
<title>Newsfeeder</title>
<body>
<?php
$array = file(news.txt);
$array = array_reverse($array)
for($i=0; $i<=sizeof($array); $i = $i+1)
{
echo "$array[$i] <p>";
}
?>
</body>
</html>
news.txt:
test
test
test
test
test
Ich erhalte aber folgende Ausgabe:
戼㸯㰊㹢慐獲牥潲㱲戯㨾†祳瑮硡攠牲牯湵硥数瑣摥吠䙟剏椠戼䌾尺牐杯慲浭履慸灭屰瑨潤獣湜睥晳敥敤桰㱰戯‾湯氠湩戼㜾⼼㹢戼㸯
Was mache ich falsch?
Hi,
$array = file(news.txt);
mach hier mal
echo "<pre>";
print_r($array)
echo "</pre>";
So kannst Du Dir den Originalarray anzeigen lassen.
$array = array_reverse($array)
hier nochmal
echo "<pre>";
print_r($array)
echo "</pre>";
um den veränderten Array anzuzeigen. So stellst Du fest, ob Deine Ursprungsdaten ok sind. Ist das der Fall liegt Dein Fehler in Deiner Ausgabe.
Gruesse, Joachim
$array = file(news.txt);
mach hier mal
echo "<pre>";
print_r($array)
echo "</pre>";
So kannst Du Dir den Originalarray anzeigen lassen.$array = array_reverse($array)
hier nochmal
echo "<pre>";
print_r($array)
echo "</pre>";
um den veränderten Array anzuzeigen. So stellst Du fest, ob Deine Ursprungsdaten ok sind. Ist das der Fall liegt Dein Fehler in Deiner Ausgabe.
Ich hab das jetzt gemacht. Bloß an der Ausgabe ändert sich nichts.
Hello,
Ich hab das jetzt gemacht. Bloß an der Ausgabe ändert sich nichts.
Lies Dir bitte dedlfix Posting nochmal durch. Das war zwar sehr kompakt, aber mMn bisher das einzige, dass in der Sache (Grundlage) zum Ziel führt.
Er sagte, dass Du die neue Zeile in eine neue Datei schreiben sollst und dann die alte Datei hinten anhängen sollst. Anaschließend musst Du natürlich die alte Datei löschen und die neue umbenennen auf den namen der alten. Das schreieb er nicht. Allerdings solltest Du das eventuell schon selber gewusst haben.
Während dieses ganzen Vorganges musst Du sowohl die alte als auch die neue Datei durch einen entsprechenden Mechanismus schützen gegen den Zugriff duch weitere Benutzer. Das muss nicht unbedingt gleich ein totales Lock (Exclusives Lock) sein. Für den Anfang wäre es aber am einfachsten.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo und guten Tag,
Also wie wenn man eine Datei mit fopen(irgentwas.txt, a) öffnet bloß, dass man etwas am Anfang hinzufügt.
Versuchs mal andersrum...
Ergänze Dein Textfile am ende der Datei und drehe bei der Ausgabe die Reihenfolge so um:
//ausgeben
$filename = "test.csv";
// Datei "zeilenweise" in ein Array einlesen
$array = file($filename);
// $array von hinten nach vorne sortieren
$i = sizeof($array);
while ($i--) {echo trim($array[$i]) . "<br>";}
Evtl. reicht das schon?!
Guma
Hi,
// $array von hinten nach vorne sortieren
$i = sizeof($array);
while ($i--) {echo trim($array[$i]) . "<br>";}
dafür gibts rsort.
Gruesse, Joachim
Hallo Joachim:
// $array von hinten nach vorne sortieren
dafür gibts rsort.
in der Kombination mit dem Text stimmt dies, diese Funktion ist jedoch kein Ersatz für das Umdrehen eines Arrays, was folgender Code bewirken soll:
$i = sizeof($array);
while ($i--) {echo trim($array[$i]) . "<br>";}
Beispiel:
$fruits = array("Banane", "Orange", "Zitrone", "Apfel");
Das Ergebnis von rsort($fruits);
ist wie im Handbuch:
Zitrone
Orange
Banane
Apfel
Das Ergebnis von $ausgabe = [link:http://www.php.net/manual/de/function.array-reverse.php@title=array_reverse]($fruits);
hingegen wäre:
Apfel
Zitrone
Orange
Banane
Wenn man ein Array von hinten nach vorne lesen möchte, welches ist wohl das gewünschte Ergebnis?
Freundliche Grüße
Vinzenz
Hi,
Apfel
Zitrone
Orange
Banane
Du meinst ich vergleiche Äpfel mit Birnen?
;-)
im Ernst, reverse ist geeignet, siehe anders Posting...
Gruesse, Joachim
Hallo,
das ist eine so oft gefragte Frage, dass die Frage und ihre Antwort tatsächlich in den oft gefragten Fragen steht:
de.comp.lang.php.* FAQ: 13.4. Wie kann ich in einer Datei eine Zeile einfügen oder löschen?
Gruß, Thoralf