如何灵活的替换配置文件中的引号之间的值?

mouzhi 2006-08-08 10:42:21
config.inc.php 配置文件
<?
//网站资料信息
$sitename="网站名称"; //网站名称
$siteurl="http://www.domain.com"; //网站地址
$dflang="gb2312"; //默认语言的文件夹名称
?>

通过后台提交表单来更换配置文件中,变量引号中的值。

以下是我写的一个替换函数:

function replace($start,$end,$filepath,$truevalue) {
$content = @file_get_contents($filepath);
$filecontop=explode($start,$content);
$fileconend=explode($end,$filecontop[1]);
$newcontent=$filecontop[0].$start.$truevalue.$end.$fileconend[1];
return $newcontent;
}

执行如下代码时,不能成功。
<?
$newsname=replace("sitename=\"","\";","config.inc.php","$_POST[sitename]");
echo $newsname;
?>
执行结果是这样,是残缺的代码:
<?
//网站资料信息
$sitename="网站名称"; //网站名称
$siteurl="http://www.domain.com

如下代码,才可以:
<?
$newsname=replace("sitename=\"","\"; //网站名称","config.inc.php","$_POST[sitename]");
echo $newsname;
?>

看到dz和pw都有这么一个配置文件,不知道是怎么实现的,我觉得自己的方法有点不灵活。

大家帮帮我,谢谢
...全文
225 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gdj 2006-08-09
  • 打赏
  • 举报
回复
根本不需要替换啊。重新生成一次这个文件就行了。

1.读旧的config
2.从前台取得新的值
3.将数组再次写入config
mouzhi 2006-08-09
  • 打赏
  • 举报
回复
我想实现这样的效果。

现在就是想知道如何取出第一个特征码(这个特征码在整个代码中不唯一)之后的全部代码?
zeroleonhart 2006-08-09
  • 打赏
  • 举报
回复
首先你如果要修改config.ini.php的值的话,这个文件就失去意义了。
你根本就不需要修改,只要在调用文件之后再重新赋值就可以了
mouzhi 2006-08-09
  • 打赏
  • 举报
回复
问题是出在replace函数中, $fileconend=explode($end,$filecontop[1]);上,如果是这个后置的特征码不唯一,$fileconend[1]得出来的值是被后置特征码分离的数组的第二个值。

怎么才能使$fileconend[1]等于从后置特征码以后的全部内容呢?
mouzhi 2006-08-09
  • 打赏
  • 举报
回复
直接replace不行呀。

上面我说了,如果那样的话,后置的唯一代码必须是这样:“\"; //网站名称”,而这样“\;”的话,replace得出来的结果是残缺的。
ice_berg16 2006-08-09
  • 打赏
  • 举报
回复
直接replace就行
mouzhi 2006-08-09
  • 打赏
  • 举报
回复
多谢了!
Gdj 2006-08-09
  • 打赏
  • 举报
回复
哦,没发现唠叨已经写了个很详细的。当我没吱声吧……
Gdj 2006-08-09
  • 打赏
  • 举报
回复
写一个数组啊。举止个简单的例子,比如你要把所有global变量写进文件

buf='<?php';
foreach($GLOBALS as $k=>$v){
buf.="\$$k='$v';\r\n";
}
buf.="?>";
file_put_contents($fname,$buf)
xuzuning 2006-08-09
  • 打赏
  • 举报
回复
<?php
// 控制变量说明
$note = array(
'sitename' => '网站名称',
'siteurl' => '网站地址',
'dflang' => '默认语言的文件夹名称',
);

//用于读取配置文件
function load_config() {
include 'config.inc.php';
return get_defined_vars();
}

if(! $_POST) {
//从配置文件生成表单
echo '<form method=post>';
foreach(load_config() as $k=>$v) {
echo "{$note[$k]}<input type=text name=$k value=$v><br>";
}
echo '<input type=submit></form>';
}else {
//将提交数据写入配置文件
extract($_POST);
$fp = fopen('config.inc.php', "w");
fputs($fp, "<?php\n");
foreach($note as $k=>$v) {
fputs($fp, "\$$k = '{$$k}'; //$v\n");
}
fputs($fp, "?>");
fclose($fp);
echo '<pre>';
readfile('config.inc.php');
}

?>
mouzhi 2006-08-09
  • 打赏
  • 举报
回复
重新生成配置文件的话,也是一条一条的写,比如:
$aa.="<?\n"
$aa.="$sitename=\"$_POST[sitename]\";\n";
$aa.=....(此处省略)
$aa.="?>";

然后再把变量aa写入配置文件中。

Gdj老大是怎么把这一组一组的变量写入文件的,请教。

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧