2010-07-08 5 views
1

J'ai besoin d'ouvrir un fichier, de remplacer du contenu (12345 à 77348) et de l'enregistrer. Jusqu'à présent, j'ai php fopen, str_replace

$cookie_file_path=$path."/cookies/shipping-cookie".$unique; $handle = fopen($cookie_file_path, "r+"); $cookie_file_path = str_replace("12345", "77348", $cookie_file_path);

fclose($handle);

Cependant, il ne semble pas fonctionner .... J'apprécierais toute aide!

+0

Désolé, je n'ai pas le temps de poster une réponse détaillée, mais vous dire str_replace de remplacer « 12345 » par « 77348 » dans votre cookie_file_path de $, pas le contenu réel du fichier. Vous devez lire le contenu du fichier dans un tampon et le remplacer dans THIS, puis réécrire le contenu du fichier. – jaywon

+0

Vous voudriez probablement un fwrite là quelque part, aussi. – JAL

Répondre

5

Vous n'avez nulle part dans votre code le contenu de votre fichier. Si vous utilisez PHP 5, vous pouvez utiliser quelque chose comme ce qui suit:

$cookie_file_path = $path . '/cookies/shipping-cookie' . $unique; 
$content = file_get_contents($cookie_file_path); 
$content = str_replace('12345', '77348', $content); 
file_put_contents($cookie_file_path, $content); 

Si vous êtes sur PHP 4, vous devez utiliser une combinaison de fopen(), fwrite() et fclose() dans afin d'obtenir le même effet que file_put_contents(). Cependant, cela devrait vous donner un bon départ.

1

Vous effectuez le remplacement sur le nom de fichier, pas le contenu. Si c'est un petit fichier, vous pouvez utiliser file_get_contents et file_put_contents à la place.

$cookie_file_path=$path."/cookies/shipping-cookie".$unique; 
$contents = file_get_contents($cookie_file_path); 
file_put_contents($cookie_file_path, str_replace("12345", "77348", $contents)); 
1

Vous aurez besoin d'ouvrir une nouvelle poignée de fichier dans le fichier que vous souhaitez enregistrer, puis lire le contenu du premier fichier, appliquer la traduction, puis enregistrez-le à la deuxième manche du fichier:

$cookie_file_path=$path."/cookies/shipping-cookie".$unique; 

# open the READ file handle 
$in_file = fopen($cookie_file_path, 'r'); 

# read the contents in 
$file_contents = fgets($in_file, filesize($cookie_file_path)); 
# apply the translation 
$file_contents = preg_replace('12345', '77348', $file_contents); 
# we're done with this file; close it 
fclose($in_file); 

# open the WRITE file handle 
$out_file = fopen($cookie_file_path, 'w'); 
# write the modified contents 
fwrite($out_file, $file_contents); 
# we're done with this file; close it 
fclose($out_file); 
0

Vous pouvez utiliser le script ci-dessous.

$ cookie_file_path = $ path. '/ cookies/shipping-cookie'. $ unique; $ content = file_get_contents ($ cookie_file_path); $ content = str_replace ('12345', '77348', $ content); file_put_contents ($ cookie_file_path, $ content);

Merci