如何编辑ini文件的内容?

时间:2015-04-13 01:17:22

标签: php arrays string file

我希望能够使用php编辑服务器应用程序的配置文件。配置文件如下:

include=sc_serv_public.conf
streamid_2=2
streampath_2=/relay
streamrelayurl_2=http://<full_url_of_relay_including_port>
;allowrelay=0
;allowpublicrelay=0

我想编辑一行:

streamrelayurl_2=http://<full_url_of_relay_including_port>

然后保存文件。

我目前正在使用:

$data = file_get_contents("sc_serv.conf"); //read the file
$convert = explode("\n", $data); //create array separate by new line

打开文件,但现在我不知道如何编辑它。

2 个答案:

答案 0 :(得分:2)

作为替代方案,您只需使用file()即可。这只是将其加载到数组形式,不需要explode。然后,你只需循环元素,如果找到所需的针,覆盖它,再次写入文件:

$data = file('sc_serv.conf', FILE_IGNORE_NEW_LINES); // load file into an array
$find = 'streamrelayurl_2='; // needle
$new_value = 'http://www.whateverurl.com'; // new value
foreach($data as &$line) {
    if(strpos($line, 'streamrelayurl_2=') !== false) { // if found
        $line = $find . $new_value; // overwrite
        break; // stop, no need to go further
    }
}
file_put_contents('sc_serv.conf', implode("\n", $data)); // compound into string again and write

答案 1 :(得分:1)

您可以使用file()将文件内容读取到数组中,然后通过foreach()使用strstr()函数搜索包含您网址的行(在这种情况在var $id_change中)并更改了值。然后,当您找到所需内容时,请使用foreach()结束break。并使用implode()将字符串保存在文件中,并使用file_put_content()将字符串保存到配置文件中。

参见代码:

<?php

$new_url = 'http://www.google.com';
$id_change = 'streamrelayurl_2';
$file = "sc_serv.conf";

$data = file($file); //read the file

foreach($data as $key => $value) {
  if(strstr($value, $id_change)) {
    $info = $id_change . '=' . $new_url . "\n";
    $data[$key] = $info;
    break;  
  }     
}   

$data = implode("", $data);

file_put_contents($file, $data);

?>

输出:

include=sc_serv_public.conf
streamid_2=2
streampath_2=/relay
streamrelayurl_2=http://www.google.com
;allowrelay=0
;allowpublicrelay=0