Replace string in text file using PHP Replace string in text file using PHP php php

Replace string in text file using PHP


Does this work:

$msgid = $_GET['msgid'];$oldMessage = '';$deletedFormat = '';//read the entire string$str=file_get_contents('msghistory.txt');//replace something in the file string - this is a VERY simple example$str=str_replace($oldMessage, $deletedFormat,$str);//write the entire stringfile_put_contents('msghistory.txt', $str);


Thanks to your comments. I've made a function that give an error message when it happens:

/** * Replaces a string in a file * * @param string $FilePath * @param string $OldText text to be replaced * @param string $NewText new text * @return array $Result status (success | error) & message (file exist, file permissions) */function replace_in_file($FilePath, $OldText, $NewText){    $Result = array('status' => 'error', 'message' => '');    if(file_exists($FilePath)===TRUE)    {        if(is_writeable($FilePath))        {            try            {                $FileContent = file_get_contents($FilePath);                $FileContent = str_replace($OldText, $NewText, $FileContent);                if(file_put_contents($FilePath, $FileContent) > 0)                {                    $Result["status"] = 'success';                }                else                {                   $Result["message"] = 'Error while writing file';                }            }            catch(Exception $e)            {                $Result["message"] = 'Error : '.$e;            }        }        else        {            $Result["message"] = 'File '.$FilePath.' is not writable !';        }    }    else    {        $Result["message"] = 'File '.$FilePath.' does not exist !';    }    return $Result;}


This works like a charm, fast and accurate:

function replace_string_in_file($filename, $string_to_replace, $replace_with){    $content=file_get_contents($filename);    $content_chunks=explode($string_to_replace, $content);    $content=implode($replace_with, $content_chunks);    file_put_contents($filename, $content);}

Usage:

$filename="users/data/letter.txt";$string_to_replace="US$";$replace_with="Yuan";replace_string_in_file($filename, $string_to_replace, $replace_with);

// never forget about EXPLODE when it comes about string parsing// it's a powerful and fast tool