Hallo cr.
danke für die hilfe, aber irgendwie habe ich noch einen fehler im script?
<?
$datei = file('test.txt');
foreach($datei as $zeile)
{
$zeile = explode('|',$zeile);
$zeile[1] = 'neuereintrag';
$zeile = implode('|',$zeile);
file_put_contents('test.txt',$datei);
}
?>inhalt test.txt
123|123|123|
das script führt sich zwar ohne fehlermeldung aus, aber der wert wird nicht geändert. was mache ich falsch?
Du übersiehst die Wirkungsweise des foreach-Konstruktes. Dieses arbeitet so lange mit Referenzen, bis eine Modifikation innerhalb der Schleife durchgeführt wird. Dann wird zuerst eine Kopie des zu modifizierenden Wertes angefertigt. Der Originalwert bleibt somit unverändert. Du möchtest also eher so etwas:
<?php
# Short-Open-Tags zeugen von keinem guten Stil und laufen nicht überall
error_reporting(E_ALL); # Sollte im Schlaf getippt werden
$datei = file('test.txt');
foreach ($datei as $index => $wert) {
$wert = explode('|', $wert);
$wert[1] = 'neuereintrag';
$wert = implode('|', $wert);
$datei[$index] = $wert;
}
# Nicht bei jedem Schleifendurchlauf speichern
file_put_contents('test.txt',$datei);
?>
danke und ebenfalls einen schönen sonntag.
Einen schönen Sonntag noch.
Gruß, Mathias
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules