Замена строки в текстовом файле с помощью 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);

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

32
задан Peter Mortensen 9 February 2016 в 15:45
поделиться

3 ответа

Работает ли это:

$msgid = 

Работает ли это:

[110]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);
73
ответ дан Steve Vinoski 9 February 2016 в 15:45
поделиться

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

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, когда речь идет о разборе строк // это мощный и быстрый инструмент

5
ответ дан Adrian Goia 9 February 2016 в 15:45
поделиться

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

/**
 * 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;
}
12
ответ дан Peter Mortensen 9 February 2016 в 15:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: