2010-08-12 2 views
3

내가 만든 기존의 ini 파일이 있는데 파일 섹션을 업데이트하는 방법이 있는지 또는 매번 전체 파일을 다시 작성해야하는지 알고 싶습니다.phi로 ini 파일을 업데이트하는 방법은 무엇입니까?

[config] 
    title='test' 
    status=0 
[positions] 
    top=true 
    sidebar=true 
    content=true 
    footer=false 

내가 [positions] top=false을 변경하고자하는 말 : 여기

내 config.ini 파일의 예입니다. 그래서 parse_ini_file을 사용하여 infromation을 모두 얻은 다음 변경 사항을 적용하고 fwrite를 사용하여 전체 파일을 다시 작성합니다. 아니면 해당 섹션을 변경하는 방법이 있습니까?

답변

1

PHP INI 함수를 사용하는 경우 매번 파일을 다시 작성해야합니다.

독자적인 프로세서를 작성하는 경우 제한 사항으로 업데이트 할 수 있습니다. 삽입 내용이 삭제보다 길거나 짧으면 여하튼 파일을 다시 작성해야합니다.

1

정규식을 사용하여 문자열을 대체 할 수있는 완벽한 예입니다. preg_replace 함수를 확인하십시오. $ 패턴이 정규식에

<?php 

$contents = file_get_contents("your file name"); 
preg_replace($pattern, $replacement, $contents); 

$fh = fopen("your file name", "w"); 
fwrite($fh, $contents); 

?> 

입니다 : 당신이 정규 표현식을 사용하는 방법을 아주 확실하지 않은 경우 당신은

here 그냥 당신이 그런 짓을해야합니다 명확히 할 수있는 좋은 자습서를 찾을 수 있습니다 $ 대체는 대체 값입니다.

그래서 그때 내 변화를 만드는 infromation을 모두 얻을 전체 파일

function config_set($config_file, $section, $key, $value) { 
    $config_data = parse_ini_file($config_file, true); 
    $config_data[$section][$key] = $value; 
    $new_content = ''; 
    foreach ($config_data as $section => $section_content) { 
     $section_content = array_map(function($value, $key) { 
      return "$key=$value"; 
     }, array_values($section_content), array_keys($section_content)); 
     $section_content = implode("\n", $section_content); 
     $new_content .= "[$section]\n$section_content\n"; 
    } 
    file_put_contents($config_file, $new_content); 
} 
3

난 당신의 첫 번째 제안을 사용 나를 위해 매력을 작동 .. 건배!
+0

를 다시 작성에 fwrite를 사용하도록 parse_ini_file을 사용 : – irishwill200