Заменить строку в текстовом файле с помощью PHP

Мне нужно открыть текстовый файл и заменить строку. мне нужно это

Old String: <span id="$msgid" style="display: block;"> New String: <span id="$msgid" style="display: none;"> 

Это то, что у меня есть до сих пор, но я не вижу никаких изменений в текстовом файле, кроме лишних пробелов.

 $msgid = $_GET['msgid']; $oldMessage = ""; $deletedFormat = ""; // Read the entire string $str = implode("\n", file('msghistory.txt')); $fp = fopen('msghistory.txt', 'w'); // Replace something in the file string - this is a VERY simple example $str = str_replace("$oldMessage", "$deletedFormat", $str); fwrite($fp, $str, strlen($str)); fclose($fp); 

Как мне это сделать?

Related of "Заменить строку в текстовом файле с помощью PHP"

Это работает:

 $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 string file_put_contents('msghistory.txt', $str); 

Благодаря вашим комментариям. Я сделал функцию, которая дает сообщение об ошибке, когда это происходит:

 /** * 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; } 

Это работает как шарм, быстрый и точный:

 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); } 

Применение:

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

// никогда не забываем о EXPLODE, когда речь заходит о разборе строк // это мощный и быстрый инструмент