用php对配置文件进行修改操作,怎么才能只改变其中某一项的参数,其他的不变呢!
例如:
我只需要改变Avai_Start_Time为1200,其他参数不变!我用fprintf函数,可以改变Avai_Start_Time的参数,但是整个配置文件里就只有Avai_Start_Time这一个参数,其他参数丢失。
Avai_WeekDay=127
Avai_Start_Time=0
Avai_End_Time=2300
望高手指点!

解决方案 »

  1.   

    $content = file_get_contents('config.txt');
    $content = str_replace('Avai_Start_Time=0','Avai_Start_Time=123');
    $f = fopen('config.txt','w');
    fwrite($f,$content);
    fclose($f);
      

  2.   

    还是不能解决问题啊。$content = file_get_contents('php11.ini');
    $content = str_replace("Avai_Start_Time=0","Avai_Start_Time=123","$content");
    $f = fopen('php11.ini','w');
    fwrite($f,$content);
    fclose($f);现在的问题是:
    1.配置文件中有2个Avai_Start_Time=参数,也就是Avai_Start_Time=0和Avai_Start_Time=123都存在。
    2.还有这个配置文件随时在变化。也就是被替换的Avai_Start_Time=0随时在变。
    这位大哥,帮我看看,第一次弄这个,脑壳都大了。。
      

  3.   

    你把配置文件写成xml文件,这不就好修改拉
      

  4.   

    这个配置文件是用户经常改变的。
    不是配好了就不变了。
    xml是好。但是他们做成了xxx.ini文件。没办法。
    麻烦各位 大哥帮帮忙啊!
      

  5.   

    就是说,在修改的时候不理会Avai_Start_Time的当前值?
    这样试试:
    $content = preg_replace("/Avai_Start_time=\d+/","Avai_Start_time=123",$content);
      

  6.   

    问题已经解决。有时候失败是因为配置文件中的Avai_Start_time变成Avai_Start_Time
    这位大哥。先谢了哈、
    不过我还有个疑问,不知道这个问题可不可以把配置文件读到一个数组中,再对这个数组进行操作。
    但是我想在数组元素中找到我们需要修改的变量也是个问题。问题已经搞定,不过初学PHP,暂不结帖。想看看还有其他方法处理这个问题不?
      

  7.   

    $arr = file('config.txt'); //数组中的每个单元都是文件中相应的一行,包括换行符在内
      

  8.   

    如果你的配置文件格式有固定格式的话(Avai_Start_time项在固定的行),读入数组操作更方便,也不容易出错,比如固定在配置文件的第10行,可以这样处理:
    $arr = file('config.txt');
    $arr[9] = "Avai_Start_time=123\n";
    $f = fopen('config.txt','w');
    fwrite($f,implode($arr));
    fclose($f);
      

  9.   

    嗯,确实,如果每一项固定在一个位置,是好操作的多。不过要求的是随机的。没办法--我又想了个方法可以找到配置文件中的某一行进行操作。分享哈。也帮我看看那里可能有问题!$file_handle = fopen("php11.ini", "r");
            while (!feof($file_handle)) 
            {
            $line = fgets($file_handle);
            $str=strstr($line,'Avai_Start_Time=');
            echo $str;
            $content=file_get_contents('php11.ini');
            $content= str_replace($str,"Avai_Start_Time=1234\r\n",$content);
            $f=fopen('php11.ini','w');
            fwrite($f,$content);
            fclose($f);
            }   
            fclose($file_handle);
      

  10.   

    $content = preg_replace("/Avai_Start_time=\d+/i","Avai_Start_time=123",$content);
    加个i修正符,可以忽略大小写。