работа parse_ini_file с константами

Long

Новичок
работа parse_ini_file с константами

можно ли заставить функцию parse_ini_file воспринимать более одной константы в рамках одной настройки? т.е. например sample.ini следующий:
[section]
var = FOO BAR

PHP:
define('FOO', 'foo');
define('BAR', 'bar');

$ini_array = parse_ini_file("sample.ini");
не распознает константы, а хотелось бы.
 

SiMM

Новичок
Ничего не понял. Создал файл

PHP:
;<?php print_r(parse_ini_file(__FILE__,true));die();?>
[section]
var = FOO BAR
Получил, как и ожидалось,
Код:
;Array
(
    [section] => Array
        (
            [var] => FOO BAR
        )
)
А надо-то было что?
 

Long

Новичок
есть константы define('FOO', 'foo'); и define('BAR', 'bar'); parse_ini_file должен распознавать константы (если они определены раньше вызова функции). одна константа в строке прекрасно распознается, две и более - уже нет. в этом вся проблема.
 

SiMM

Новичок
> одна константа в строке прекрасно распознается
Фигня по моему какая-то. А должно? Если и распознаётся - то это, имхо, из серии багов. Хотя я и догадываюсь, благодаря чему они имеют место быть. А так - только ручками.

-~{}~ 27.09.05 20:59:

Ага. Судя по ману - должно. Однако это имхо неправильно :)

-~{}~ 27.09.05 21:00:

Гы. Вот изврат :)
PHP:
define('FOO BAR','foo bar');
 

Long

Новичок
SiMM, да это - define('FOO BAR','foo bar'); - действительно изврать :)
самое интересное, что логические операции работают, т.е.

define('FOO', 1);
define('BAR', 0);

и
[section]
var = FOO & BAR
выдает правильный 0
 

Frol

Новичок
Long
самое интересное, что логические операции работают, т.е.
интересное что?
то, что работает так, как описано в мане?

и, да, FOO BAR -- это какая операция?
 

Long

Новичок
Frol ну не надо читать только последнее сообщение, стоит начинать с самого первого. в нем все озвучено - "не воспринимается более одной константы в рамках одной настройки". логические операции между константами - действуют, заставить работать строковые константы - у меня не получилось. вариант
[section]
var = FOO BAR
это один из возможных мной опробованых. мне нужно было привести все варианты? или ты утверждаешь, что в мане написано, что исключение сделано только для логических операций?
 

Long

Новичок
судя по багрипортам обработка констант получилась случайно (не документированая фича), поэтому полной функциональности требовать от фичи нельзя :)
 

crocodile2u

http://vbolshov.org.ru
Long
А зачем это понадобилось - чтобы "FOO BAR" распознавалось как "значение_FOO значение_BAR"?
 

Long

Новичок
crocodile2u
1. в мане написано, что константы обрабатываются, значит они должны обрабатываться ;)
2. в моем случае - у меня есть константа, определяющая полный путь до пользователькой корневой директории, мне было бы удобно подставить ее в ини-файл и на выходе его обработки получить полные пути к определенным директориям. но проблема не только в том, что со строковыми константами беда, проблема еще и с конкатенацией строки и константы. по всей видимости, в parse_ini_file нет обработки конкатенации строк вообще. да, можно конечно в ини-файле условится, что путь будет определяться относительно корневой директории, но хотелось большей гибкости и строгости в определении.
собственно придется так и поступить - писать относительный путь.
 
Сверху