0

parse_ini_file函数在读取配置文件时删除注释。

您将如何保留与下一行相关的注释?

例如:

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

我正在考虑使用 X(HT)ML 和 XSLT 将内容转换为 INI 文件(以便文档和选项可以单一来源)。例如:

<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>

还有其他想法吗?

4

1 回答 1

1

您可以使用 preg_match_all 在[heading]标记后提取评论:

$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 重新启动到另一个操作系统,但我认为生成 HTML 的其余部分应该很容易。

于 2010-04-17T02:41:50.887 回答