0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
1

Обрабаботка конфигурационного файла

12.11.2013, 14:43. Показов 565. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть конфигурационный файл test.conf. Необходимо написать функцию, которая преобразовывает этот файл в массив следующего вида (использовать функцию parse_ini_file нельзя):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
*** [path] => Array
******* (
*********** [plugins] => plugins
*********** [cache] => cache
*********** [comments] => comments
******* )
*
*** [cache] => Array
******* (
*********** [enable] => 1
*********** [expiration] => 86400
******* )
*
 ***[distribute] => Array
******* (
*********** [[url]http://autoselect][/url] => auto
******* )
)
Вот test.conf:

Код
; ----- some comments 
[path] 
* 
; plugins directory 
plugins = plugins 
* 
; cache directory 
cache = cache 
* 
; comments files directory 
comments = comments 
* 
; ----- cache options 
[cache] 
* 
; use cache (yes/no) 
enable = yes 
* 
; cache expiration timeout 
expiration = 86400 
* 
; ----- cache distribution 
[distribute] 
* 
; plugin://host = weight 
[url]http://autoselect[/url] = auto 
* 
; ----- name validation conditions
Подскажите алгоритм выполнения.
Идеально было бы если бы вы скинули код по теме.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2013, 14:43
Ответы с готовыми решениями:

Многоуровневое меню из конфигурационного файла
Имею конфигурационный класс class Config { /** * @var array */ protected...

Защита конфигурационного файла
Есть файл config.php в котором содержатся реквизиты к mysql. К нему закрыт доступ "извне" через...

backup конфигурационного файла
не могу создать backup конфигурационного файла. Cisco 871 и ПК под Win XP. роутер подключен до ПК...

Размер конфигурационного файла MD
Резко вырос размер конфигурационного файла, примерно в 10 раз. Добавлен отчет и изменен документ....

8
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
12.11.2013, 14:53 2
Используйте .ini. И функцию: parse_ini_file
PHP
1
parse_ini_file ('file.ini', TRUE);
0
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
12.11.2013, 15:04  [ТС] 3
Есть такое условие - (использовать функцию parse_ini_file нельзя)
0
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
12.11.2013, 15:22 4

Не по теме:

mihon1, :D не внимательный я.


Можно так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$file = file('test.conf');
$conf = array();
 
foreach($file as $str)
{
    if(preg_match("~\;(.?)~",$str) || preg_match("~\*(.?)~",$str)) continue;
    if(preg_match("/\[(.*?)\]/",$str, $res))
    {
        $m = $res[1];
        $conf[$m] = array();
    }
    if(preg_match("/(.*?) = (.*)/", $str, $vars))
        $conf[$m][$vars[1]] = $vars[2];
}
0
Марсианин
87 / 87 / 22
Регистрация: 11.10.2012
Сообщений: 333
12.11.2013, 15:25 5
Dealiss, дай ссылку пожалуйста на страницу, где бы описывались регулярные выражения по типу такого "~\;(.?)~", чтобы использовать их в preg_match.

Только желательно чтобы для тупых, с примерами. Не могу их догнать
0
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
12.11.2013, 15:27 6
Цитата Сообщение от mihon1 Посмотреть сообщение
[enable] => 1
А что бы вместо yes было 1, надо изменить:
PHP
1
2
3
4
5
6
if(preg_match("/(.*?) = (.*)/", $str, $vars))
{
    if($vars[2] == 'yes') $vars[2] = 1; 
    elseif($vars[2] == 'no') $vars[2] = 0;
    $conf[$m][$vars[1]] = $vars[2];
}
Добавлено через 1 минуту

Не по теме:

MarlboroRed, честно, даже не знаю. Я сам выучил их на примерах, здесь, на форуме. Скажем так, много экспериментировал.

0
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
12.11.2013, 15:34  [ТС] 7
вроде все так, но у меня почему то в браузере просто пустое окно получается ни ошибок ни теста который должен был получиться)
0
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
12.11.2013, 16:19 8
mihon1, так и должно быть. А где Вы видите var_dump, print_r или другую любую команду, для вывода на экран данных?
В конце кода напишите:
PHP
1
var_dump($conf);
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
12.11.2013, 16:23  [ТС] 9
дадададдадда получилось!!!!!!!!!!!!!!!!! спасибо огромное!!
0
12.11.2013, 16:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2013, 16:23
Помогаю со студенческими работами здесь

Изменение конфигурационного файла
Ставила апаче с помощью Зенд. Почему после изменения конфигурационного файла httpd не запускается...

Шифрование конфигурационного файла
Всем привет. Возник вопрос. Есть сервер, есть конфигурационный файл, лежащий рядом с сервером,...

Чтение конфигурационного файла
Доброго времени! Подскажите пожалуйста, как лучше сделать чтение конфигурационного файла? Например...

Создание конфигурационного файла
Добрый день, форумчане! Такая проблема: надо создать свой конфигурационный файл для задания в нем...

Считывание параметров из конфигурационного файла c#
Всем привет! гугл и яндекс , msdn ничего полезного не нашел ( 1 Что это такое?! 2 как и зачем...

Провести сортировку конфигурационного файла shell
Приветствую. Помогите пожалуйста. Провести сортировку конфигурационного файла shell (.profile,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru