daten in einer datei ersetzen

schiieech

Mitglied
hi!

ich hab eine textdatei, mit variablem inhalt. diese text-datei hat aber immer die gleich struktur:

1a~~1b~~1c~~1d~~1e
2a~~2b~~2c~~2d~~2e
3a~~3b~~3c~~3d~~3e
4a~~4b~~4c~~4d~~4e
5a~~5b~~5c~~5d~~5e

nur die zeilen variieren...
jetzt hab ich noch eine php-datei, die aus "3c" ganz einfach "blahblah" machen soll.
mein code sah so aus, hat aber nur fehler ausgespuckt
Code:
<?php

$myfile = file('test.txt');
$split = explode("~~",$myfile[2]);
$change = ereg_replace($split[2],"blahblah",$split[2]);

$fo = fopen("test.txt");
fwrite($fo,$change);
fclose($fo);

?>

was mach ich da falsch bzw. wie kann ich´s richtig machen??
plaease help!

schiieech
 
probier mal :

PHP:
<?php

$db = "test.txt";
$myfile = file($db, "r");

$datei = implode("",$myfile);

$split = explode("~~",$datei);

$change = ereg_replace($split[2],"blahblah",$split[2]);

$fo = fopen("test.txt");
fwrite($fo,$change);
fclose($fo);

?>

aber keine garantie ob das geht, hab das grad frei ausm kopf geschrieben...probiers mal aus, und sag was für einen fehlercode er evtl. ausgibt !
 
Zuletzt bearbeitet:
so in der art hab ich´s auch schon mal probiert.... :(

Warning: Wrong parameter count for fopen() in e:\foxserv\www\a\index.php on line 12

Warning: Supplied argument is not a valid File-Handle resource in e:\foxserv\www\a\index.php on line 13

Warning: Supplied argument is not a valid File-Handle resource in e:\foxserv\www\a\index.php on line 14
 
ah, na is ja klar ....
das muss ja auch heissen:

PHP:
$fo = fopen("test.txt", "r+");

fwrite($fo,$change);

fclose($fo);

das andere müsste ja funzen
probier mal aus was er ausgibt wenn du noch einbaust:

PHP:
echo $change;
 
hi!

erstmal danke für deine hilfe!
geht aber leider immer noch net ganz so, wie ich wollte....

blahblah1c~~1d~~1e
2a~~2b~~2c~~2d~~2e
3a~~3b~~3c~~3d~~3e
4a~~4b~~4c~~4d~~4e
5a~~5b~~5c~~5d~~5e

der nimmt jetzt praktisch alles vor 1c (=split[2]) weg und ersetzt es mit "blahblah".
da kann doch schon gar nich mehr so viel falsch sein?
 
also ich hab das jetz mal bei mir getestet...

du musst das so machen...

du darfst nicht im array ersetzen, sondern im string der zeichenkette.

also musst du nochmal die datei öffnen, das machst du dann so:

PHP:
$bla = fopen("test.txt", "r");
$bla = fgets($bla, 1000);
$change = ereg_replace($split[2],"blahblah",$bla);

dann geht das :)

zumindest bei mir
:-)
 
bah, ich bin einfach zu blöd :(
bei mir rennt die kiste net, bringt zwar keine fehler aber die datei ändert sich auch nich....

kannst du bitte nochmal den gesamten code posten?
 
klar ;)
PHP:
$db = "test.txt";

$myfile = file($db, "r");

$datei = implode("",$myfile);

$split = explode("~~",$datei);


$bla = fopen("test.txt", "r");
$bla = fgets($bla, 100);

$change = ereg_replace($split[2],"blahblah",$bla);

$fo = fopen("test.txt", "r+");
fwrite($fo,$change);
fclose($fo);
 
hmm, supi.
klappt fast. die test-datei sieht jetzt aber so aus:

1a~~1b~~blahblah~~1d~~1e
~~2c~~2d~~2e
3a~~3b~~3c~~3d~~3e
4a~~4b~~4c~~4d~~4e
5a~~5b~~5c~~5d~~5e

in der zweiten zeile nimmt er die zeichen also mit weg... soll er aber nich.

wie kann ich bei dem skript eine bestimmte zeile direkt ansprechen (z.b. "4a~~4b~~...")?
 
hm, ist mir garnicht aufgefallen, aber du hast recht, das er da die 2 Zeichen aus der 2. zeile mit raus nimmt...sehr seltsam :(

keine ahnung an was das liegt, ich glaub dann kann ich dir auch nicht weiter helfen... :(

würd mich aber auch mal interessieren wie das richtig funktionieren könnte...
 
Zurück