Прочитать комментарии строки в файле INI - PullRequest
0 голосов
/ 17 апреля 2010

Функция 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 Ответ

1 голос
/ 17 апреля 2010

Вы можете использовать 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 должно быть легко.

...