覆盖PHP文件的内容

时间:2017-03-30 16:49:49

标签: php

我想在PHP Config文件中写一些带标签的数据,如下所示:

define("__dbhost__",                    '{DB_HOST}');
define("__dbname__",                    '{DB_NAME}');
define("__dbuser__",                    '{DB_USER}');
define("__dbpass__",                    '{DB_PASS}');
define("__dbport__",                    '{DB_PORT}');

所以文件非常简单。

我试图替换数据的方式是:

$searchF  = array('{DB_HOST}','{DB_NAME}','{DB_USER}','{DB_PASS}', '{DB_PORT}');
$replaceW = array('a','c','d','b','a');

$fname = "../app/config/database.php";
$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));
$content = str_replace($searchF, $replaceW, $content);

$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);

但是一旦完成,我打开文件后就得到了

Resource id #16

在里面。

发生了什么以及为什么典型的str_replace不适合这种情况?

1 个答案:

答案 0 :(得分:1)

只需将整个文件读成字符串:

$searchF  = array('{DB_HOST}','{DB_NAME}','{DB_USER}','{DB_PASS}', '{DB_PORT}');
$replaceW = array('a','c','d','b','a');

$fname = "../app/config/database.php";
$content = file_get_contents($fname);
$content = str_replace($searchF, $replaceW, $content);
file_put_contents($fname, $content);
  • 将文件读入字符串
  • 替换该字符串
  • 将字符串写入文件