我希望能够使用 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
打开文件,但现在我不知道如何编辑它。
作为替代方案,您可以改用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
file()
将文件内容读取到数组中,然后您可以使用strstr()
函数foreach()
搜索包含您的URL的行(在本例中位于var $id_change
中)并更改值。然后,当您找到所需的内容时,您以break
结束foreach()
。并使用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