【发布时间】:2016-02-29 06:38:40
【问题描述】:
我正在使用parse_ini_file 使用 PHP 解析一个 ini 文件。
现在我首先将一个 INI 文件上传到我的服务器,然后打开它并允许用户对文件进行自定义更改。
现在,一旦用户编辑了文件,我就会从帖子中获取数据并将文件保存回服务器。但现在我没有得到我的部分。 INIdetails,Dialplan在更新的文件中所以当我也想把那个写到文件中怎么办?
这是代码:
$this->data['parameters'] = parse_ini_file($path.$filename,true);
/*Getting Our POST DATA from View*/
$data = array(
'SipUserName' => $this->input->post('SipUserName') ,
'SipAuthName' => $this->input->post('SipAuthName'),
'DisplayName' => $this->input->post('DisplayName'),
'Password' => $this->input->post('Password'),
'Domain' => $this->input->post('Domain'),
'Proxy' => $this->input->post('Proxy'),
'Port' => $this->input->post('Port'),
'ServerMode' => $this->input->post('ServerMode'),
'Param_1' => $this->input->post('Param_1'),
'Param_2' => $this->input->post('Param_2')
);
/*Creating New file with the name of customer loggedin*/
$name = $this->session->userdata('username');
$ext = $this->session->userdata('extension');
$custom_file = fopen('uploads/'.$name.'_'.$ext.'.ini', 'w');
fwrite($custom_file, "[INIDetails]\n");
foreach ($data as $key => $value)
{
fwrite($custom_file, " $key = $value\n");
}
fclose($custom_file);
/*Setting path to New CUSTOM file with customer name as prefix*/
$file = $path.$custom_file;
function write_php_ini($array, $file)
{
$res = array();
foreach($array as $key => $val)
{
if(is_array($val))
{
$res[] = "[$key]";
foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"');
}
else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"');
}
safefilerewrite($file, implode("\r\n", $res));
}
function safefilerewrite($fileName, $dataToSave)
{ if ($fp = fopen($fileName, 'w'))
{
$startTime = microtime(TRUE);
do
{ $canWrite = flock($fp, LOCK_EX);
// If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
if(!$canWrite) usleep(round(rand(0, 100)*1000));
} while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5));
//file was locked so now we can store information
if ($canWrite)
{ fwrite($fp, $dataToSave);
flock($fp, LOCK_UN);
}
fclose($fp);
}
}
/*Creates ini file, dumps array to string and creates .INI file*/
write_php_ini($data,$file);
【问题讨论】:
-
为什么要使用
parse_ini_file写入ini文件?这是没有意义的。parse_ini_file的目的是让你可以从代码中读取ini文件中的结构化数据。不是相反。 -
下面函数写入ini文件]
-
我对你的函数做了什么并不感到困惑。我的问题是为什么要使用
parse_ini_file写入ini 文件?。这不是parse_ini_file的用途。它用于读取 ini 文件中的值到 您的代码,而不是写入 值到ini 文件中。 -
我没有使用 parse_ini_file 来编写 ini 文件。我有一个写入 .ini 文件的函数 write_php_ini
-
那你为什么要使用
parse_ini_file呢?您的问题令人困惑,因为您在此处拥有的函数将数组作为输入,这没有任何意义。为什么用户上传 ini 文件作为输入,而您正在编写一个函数,该函数将数组作为输入写入 ini 文件?
标签: php codeigniter associative-array