ereg() macht Probleme

qixx

Mitglied
Hallo Leute,
kann mir jemand sagen, was ich falsch gemacht habe?

PHP:
<?php
	unlink("datei.txt");
	$handle = fopen("datei.txt", "a+");
	fwrite($handle, "ID234|Der Text|");
	$daten = file_get_contents("datei.txt");
	ereg("ID234|(.*)|" , $daten , $id);
	echo $id[1];
       	echo $daten;
?>

Warning: ereg() [function.ereg]: REG_EMPTY in /users/csa/www/counter.php on line 89
- In diesem Falle die Zeile mit: ereg("ID234|(.*)|" , $daten , $id);

MfG
qixx
 
Es bleibt bei der Fehlermeldung. :(
Was bringt fflush denn überhaupt?
Ich hatte in der Hilfe geguckt, das aber irgendwie
nicht verstanden...

Mal eben so nebenbei:
Ich versuche eine Datei zu erstellen, in der mehrere
ID's ("ID234") mit einem Wert abgespeichert werden.
Wenn ich jetzt nach einer bestimmten ID suche, dann
soll der Inhalt ("Der Text") ausgegeben werden. Kann
ich das sonst auch anders realisieren?


Mein Code:
PHP:
<?php
	unlink("datei.txt");
	$handle = fopen("datei.txt", "a+");
	fwrite($handle, "ID234|Der Text|");
	fflush($handle);
	fclose($handle);
	$daten = file_get_contents("datei.txt");
	ereg("ID234|(.*)|" , $daten , $id);
	echo $id[1];
     	echo $daten;
?>

MfG
qixx
 
Zuletzt bearbeitet:
Eigentlich werden die Daten zuerst in einen Speicher geschrieben. Erst wenn close() oder flush() aufgerufen wird, werden sie wirklich in die Datei geschrieben.
 
So, ich habe jetzt mal weidergemacht..
Es funktioniert soweit alles, bis auf das, dass
er in ereg_replace() nicht richtig ersetzt.

Der Wert aus "Nachher" soll die 3 aus
"id234-3-id234" ersetzen.

In der datei.txt steht:
"id234-3-id234 id235-23455-id235"
Also, es sieht vor dem Ersetzen so aus:
"id234-3-id234 id235-23455-id235"
Und soll nach dem Ersetzen so aussehen:
"id234-4-id234 id235-23455-id235"


Warum klappt das nicht? :(

PHP:
<?php
	//ID schreiben
	$SearchID = $_GET['downloadid'];
	$daten = file_get_contents("datei.txt");
	unlink("datei.txt");
	ereg($SearchID."-(.*)-".$SearchID , $daten, $id);
	echo "Vorher: ".$id[1]."<br />";
	$id[1] = $id[1] + 1;
	echo "Nachher: ".$id[1]."<br />";
	echo "Vor replace: ".$daten."<br />";
			
	echo $SearchID."-XXX-".$SearchID."<br />";
		
					
			
	ereg_replace($SearchID."-(.*)-".$SearchID , $id[1], $daten);
			
	echo "Nach replace: ".$daten."<br />";
	//fwrite($handle, "id234-Der Text-id234 id235-Der Text-id235");
	$handle = fopen("datei.txt", "a+");
	fwrite($handle, $daten);
	fclose($handle);
?>	
        
<?php
	//ID lesen
	$SearchID = "id234";
	$daten = file_get_contents("datei.txt");
	ereg($SearchID."-(.*)-".$SearchID , $daten, $id);
	//echo "id[0]: ".$id[0]."<br />";
	echo "Downloads: ".$id[1]."<br />";
 ?>


MfG
qixx
 
Zuletzt bearbeitet:
ereg_replace() gibt wie auch preg_replace() den ersetzten String zurück. Daher müsste dein Code diesbezüglich eher so aussehen:

PHP:
$daten = ereg_replace($SearchID."-(.*)-".$SearchID , $id[1], $daten);
 
Genau so habe ich es gemacht, aber raus kommt nur:

 id235-23455-id235

Was habe ich jetzt wieder falsch gemacht? xD


MfG
qixx
 
So, ich habe es selbst lösen können. :)

PHP:
<?php
	//ID schreiben
	$SearchID = $_GET['downloadid'];
	$daten = file_get_contents("datei.txt");
	unlink("datei.txt");
	ereg($SearchID."-(.*)-".$SearchID , $daten, $id);
	echo "Vorher: ".$id[1]."<br />";
	$idnew = $id[1] + 1;
	echo "Nachher: ".$idnew."<br />";
	echo "Vor replace: ".$daten."<br />";
			
	echo $SearchID."-".$id[1]."-".$SearchID."<br />";

					
				
	$daten = ereg_replace($SearchID."-".$id[1]."-".$SearchID , $SearchID."-".$idnew."-".$SearchID, $daten);
	//ereg_replace($SearchID."-(.*)-".$SearchID , $id[1], $daten);
	
	echo "Nach replace: ".$daten."<br />";
	//fwrite($handle, "id234-Der Text-id234 id235-Der Text-id235");
	$handle = fopen("datei.txt", "a+");
	fwrite($handle, $daten);
	fclose($handle);
?>	
        
<?php
	//ID lesen
	$SearchID = "id234";
	$daten = file_get_contents("datei.txt");
	ereg($SearchID."-(.*)-".$SearchID , $daten, $id);
	//echo "id[0]: ".$id[0]."<br />";
	echo "Downloads: ".$idnew."<br />";
?>

Danke für eure Hilfe und einen schönen Sonntag noch! :)


MfG
qixx
 
Zurück