Как прочитать .ini-файл из php?

В рабочем проекте возникла необходимость читать информацию из .ini-файла. Сначала я обрадовался увидев в документации описание стандартной функции parse_ini_file, но радость была недолгой, так как у функции есть ограничения, которые делают ее совершенно бесполезной в моем случае.

1. Если в файле содержатся значения с символами отличными от букв и цифр, то такое значение должно быть заключено в двойные кавычки

2. Символы ?{}|&~![()^" не должны использоваться в ключах и имеют специальный смысл в значениях

В моем ini-файле лежат json структуры и потому пришлось писать собственную функцию для парсинга инишек. С использованием регулярных выражений она оказалась совсем несложной

  1. function read_ini_file($fname)
  2. {
  3. $res = array();
  4. $str = file_get_contents($fname);
  5. $str = preg_replace("#\r#", "", $str);
  6.  
  7. $sections = preg_split("#\[(\w+)\]\n#", $str, 0, PREG_SPLIT_DELIM_CAPTURE);
  8. for($i = 1; $i < count($sections); $i += 2)
  9. {
  10. $res[$sections[$i]] = array();
  11. $vals = explode("\n", $sections[$i + 1]);
  12. for($j = 0; $j < count($vals); $j++)
  13. {
  14. if(preg_match('#^(\w+)=(.+)$#', $vals[$j], $m))
  15. {
  16. $res[$sections[$i]][$m[1]] = $m[2];
  17. }
  18. }
  19. }
  20. return $res;
  21. }

Читайте в блоге

Многострочные заголовки в jqGrid
TinyURL. Шаг 4. Обработка кнопки на примере формы входа
Знакомство с WordPress

Метки: php regexp

Комментарии:

Войдите на сайт, чтобы оставить комментарий