Прочитать комментарии строки в файле INI

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>

Есть другие идеи?

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 должно быть легко.

Другие вопросы по тегам