2015-04-13 2 views
1

Я хотел бы иметь возможность редактировать файл конфигурации для серверного приложения, используя php. Файл конфигурации выглядит следующим образом:Как редактировать содержимое ini-файла?

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

Что ваш вопрос? И как в мире это имеет два upvotes? – Qix

+0

Итерации над массивом $ convert до тех пор, пока вы не найдете строку, начинающуюся с «streamrelayurl_2 =», а затем обновите этот элемент до требуемого значения. –

ответ

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 
+0

Спасибо. Это то, что мне нужно. – meun5

+0

@ meun5 уверен, что я рад, что это помогло – Ghost

+1

@ meun5 подумайте о принятии ответа, если вы не знаете, как читать это http://stackoverflow.com/tour –

1

Вы можете использовать file() прочитать содержимое файла в массив, то вы можете перебирать через массив с foreach() поиск с помощью функции strstr() строки, у которой есть ваш URL (в данном случае находится в 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 
+0

@ meun5 у вас есть продвижение? –

Смежные вопросы