2013-02-27 157 views
1

我有一個POST表單,比提交時使用鍵和值來替換一組.ini文件中的行。

$reading = fopen('Original/file.ini', 'r'); 
$writing = fopen('file.ini', 'w'); 

while (!feof($reading)) { 
    $line = fgets($reading); 
    foreach ($_POST as $key => $value) 
    { 
     if (stristr($line, $key.)) { 
      $line = " ".$key." = ".$value."; 
"; 
     } 
    } 
    fputs($writing, $line); 
} 
fclose($reading); fclose($writing); 

現在這工作正常。但是,現在我需要編輯多個文件,其中很多文件包含相同的密鑰。當然,這些文件的文件名和路徑是不一樣的,所以我想知道是否有任何方法將文本輸入分組,所以我可以繼續使用我的PHP解決方案?例如,假設我有「product1.ini」和「product2.ini」,但都有「productPrice =」行。有什麼建議麼?

回答

2

我建議你改變發佈變量的方法,使每個ini文件中的設置被張貼在命名爲ini文件的數組。

所以,你會想要得到一個職位陣列像這樣:

array(
    'product1' => array(
     'key1'=>'value1', 
     'key2'=>'value2' 
    ), 
    'product2' => array(
     'key1'=>'value1', 
     'key2'=>'value2' 
    ), 
) 

這將給予儘可能多的INI文件,只要你喜歡張貼設置的能力。

如果您以前沒有發佈過嵌套數組,那麼這很容易實現。 HTML輸入字段名稱只需要用方括號中的數組鍵格式化即可:

<input name='product1[key1]'> 

希望有所幫助。

+0

謝謝。我已經成功地使用了這個解決方案。 – 2013-03-01 15:44:55

2

我不知道如果我理解你的權利,但在你的HTML文件時,可以通過添加「[]」字符名稱屬性的末尾創建使用相同名稱的多個文本框

<input type="text" name="edit[]" /> 
<input type="text" name="edit[]" /> 

然後在你的PHP代碼,你可以把它作爲一個數組

var_dump($_POST['edit']); 
//result: array(...) 
相關問題