PHP preg_replace总是覆盖我的读取文件

时间:2017-10-25 03:03:56

标签: php

我有一个TEXT文件bla.txt

REGION_NAME =' bla_2'

您好

再见

我的脚本##

<?php
   $file = 'bla.txt';
   $file_contents = file_get_contents($file);
   $fh = fopen($file, "w");
   $file_contents = preg_replace("/(REGION_NAME =) ('')/", "$1 'us-east-A'", "REGION_NAME = ''");
   fwrite($fh, $file_contents);
   fclose($fh);
?>

当我运行它时,它会添加正确的文本,但会覆盖bla.txt文件 所以我放松了其他的话。

注意:###如果我使用str_replace工作正常但是一旦bla_2更改,那么我们就不能再次使用该脚本......

任何想法......?

$file_contents = str_replace('bla_2','bar',$file_contents);

1 个答案:

答案 0 :(得分:0)

如果您阅读了代码,则覆盖$file_contents的初始值,而不是替换$file_contents中的数据。您需要做的是:$file_contents = preg_replace("/(REGION_NAME =) ('')/", "$1 'us-east-A'", $file_contents);。作为免责声明,我实际上并没有运行您的代码,但是您从我所看到的内容中并没有传递正确的主题。

而且我认为你想要的正则表达式是preg_replace("REGION_NAME = '(.*)'", 'us-east-A', $file_contents)