2010-04-17 6 views
0

parse_ini_file 기능은 구성 파일을 읽을 때 주석을 제거합니다.INI 파일의 행 주석 읽기

다음 줄과 관련된 주석을 유지하려면 어떻게해야합니까? 예를 들어

: (문서 및 옵션은 단일 소스가 될 수 있도록) INI 파일에 내용을 변환 X (HT) ML 및 XSLT를 사용

[email] 
; Verify that the email's domain has a mail exchange (MX) record. 
validate_domain = true 

오전 생각입니다. 예 :

<h1>email</h1> 
<p>Verify that the email's domain has a mail exchange (MX) record.</p> 
<dl> 
<dt>validate_domain</dt> 
<dd>true</dd> 
</dl> 

다른 아이디어가 있습니까?

답변

1

당신은 [heading] 마크 업 후 주석을 추출으로, preg_match_all 사용할 수 있습니다

$txt = file_get_contents("foo.ini"); 
preg_match_all('/\[([^\]]*)\][[:space:]]*;(.*)/', 
    $txt, $matches, PREG_SET_ORDER); 

$html = ''; 

foreach ($matches as $val) { 
    $key = trim($val[1]); /* trimming to handle edge case 
          "[ email ]" so $key can be looked up 
           in the parsed .ini */ 
    $comment = $val[2]; 

    $html .= "<h1>$key</h1>\n"; 
    $html .= "<p>$comment</p>\n"; 
} 

echo $html; 

foo.ini은 포함 할 수있다 : 나는 기분하지 않기 때문에

[email] 
; Verify that the email's domain has a mail exchange (MX) record. 
validate_domain = true ; comment ignored 

[s2] ; comment can go here too 
foo_bar = true 

[s3] 
foo_bar = true ; comment also ignored 

내가 parse_ini_file 함께 놀러하지 않았다 PHP 5.3을 사용하여 다른 OS로 재부팅 할 수 있지만 나머지 HTML을 쉽게 생성 할 수 있어야한다고 생각합니다.

+0

'X (HT) ML -> INI'는'INI -> X (HT) ML'보다 좀 더 유연하다고 생각합니다. (엣지 경우는 없습니다.) 그러나 나는 당신의 솔루션이 작동한다는 것을 확신합니다. 고맙습니다! –