我希望能够使用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
打开文件,但现在我不知道如何编辑它。
答案 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