我想知道是否有php可以在用户发送表单后编写配置文件(例如WordPress如何设置(
由于我想制作我的php项目安装文件,所以我需要编写一个ini文件(或php(,但我不知道具体怎么做。
那么我应该怎么做呢?因为告诉用户编辑php文件太奇怪了,因为他们可能不知道怎么做。
我尝试创建一个"ini"文件,但它只能读取,我不知道如何编写它。
这里有一个可以使用的类(正则表达式不是一个好主意!
class ConfigFileManager
{
private $configFile = null;
private $items = array();
function __construct($file_address)
{
if(file_exists($file_address))
{
$this->configFile = $file_address;
$this->parse();
}
}
function __get($id) { return $this->items[ $id ]; }
function __set($id,$v) { $this->items[ $id ] = $v; }
function parse()
{
if($this->configFile != null)
{
$fh = fopen( $this->configFile, 'r' );
while( $l = fgets( $fh ) )
{
if ( preg_match( '/^#/', $l ) == false )
{
preg_match( '/^(.*?)=(.*?)$/', $l, $found );
if($found)
$this->items[ trim($found[1]) ] = trim($found[2]);
}
}
fclose( $fh );
}
else
{
$this->file_not_exist();
}
}
function save()
{
if($this->configFile != null)
{
$nf = '';
$fh = fopen( $this->configFile, 'r' );
while( $l = fgets( $fh ) )
{
if ( preg_match( '/^#/', $l ) == false )
{
preg_match( '/^(.*?)=(.*?)$/', $l, $found );
$nf .= $found[1]."=".$this->items[$found[1]]."n";
}
else
{
$nf .= $l;
}
}
fclose( $fh );
copy( $this->configFile, $this->configFile.'.bak' ); //backup last configs
$fh = fopen( $this->configFile, 'w' );
fwrite( $fh, $nf );
fclose( $fh );
}
else
{
$this->file_not_exist();
}
}
private function file_not_exist()
{
//throw exception that you want
echo "File Does Not Exist";
}
}
如何使用此类的示例
$config = new ConfigFileManager('configs/config.ini'); //opening file config.ini from configs directory
echo $config->Title; //read "Title" value which is equal to "My App"
$config->Title = "Your App"; //changing value of "Title"
$config->save(); //save changes to config.ini easily