#44019 [Asn]: Quoted strings in parse_ini_file function are not handled properly
| From: | jani@php.net | Date: | Mon, 04 Feb 2008 20:33:58 +0000 |
| Subject: | #44019 [Asn]: Quoted strings in parse_ini_file function are not handled properly | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-121965@lists.php.net to get a copy of this message | ||
ID: 44019
Updated by: jani@php.net
Reported By: petr at hroch dot info
Status: Assigned
Bug Type: Filesystem function related
Operating System: *
PHP Version: 5.3CVS-2008-02-01 (snap)
Assigned To: jani
New Comment:
And btw. Comments in the manual are not documented behaviour. :)
Previous Comments:
------------------------------------------------------------------------
[2008-02-04 20:33:17] jani@php.net
Hold your horses, I have a fix already, just waiting for commit..
------------------------------------------------------------------------
[2008-02-04 11:54:03] petr at hroch dot info
I've used this syntax in 5.x versions till now.
I got most suggestions and ideas from official documentation and
comment discussion http://php.net/manual/en/function.parse-ini-file.php
Maybe it's good idea to post there the new syntax usage change for
versions >= 5.3
before it's officially changed in documentation on php5.3 stable
release.
Regards
Petr
------------------------------------------------------------------------
[2008-02-04 10:48:30] jani@php.net
Ah, now I see. I didn't have any machine to test with during the
weekend so I got it wrong way. :D
In 5.3 the ini parsing has been improved, and along the line I broke
some old stuff which I actually didn't think anyone relied upon.
I have to investigate and check if it's possible even to keep this old
(and bad) syntax. Is it even documented anywhere?
------------------------------------------------------------------------
[2008-02-03 15:26:07] petr at hroch dot info
Hello Jani,
Before I've submited this bug, I've tested this feature in php-5.2.5
where line foo=FOO"barian" returns [foo] => barbarian
so it works gracefully, in php5.3-dev it doesn't.
In my example FOO is a constant defined before parse_ini_file
function.
In your example $FOO is undefined global variable isn't it?
Anyway changing ini file using your way doesn't work as expected, even
if there's no $FOO definition I should be expecting that
foo="{$FOO}barian" returns [foo] => barian
not [foo] => FOO}barian
modified Test.ini using Jani's solution
-------------------------------------
[Topic]
number=1
string="test"
foo="{$FOO}barian"
PHP code:
--------
<?
define("FOO","bar");
print_r(parse_ini_file("test.ini",true));
?>
Expected result:
----------------
Array
(
[Topic] => Array
(
[number] => 1
[string] => test
[foo] => barbarian
)
)
Actual Result:
--------------
Array
(
[Topic] => Array
(
[number] => 1
[string] => test
[foo] => FOO}barian
)
)
I Hope it helps.
Best regards
Petr
------------------------------------------------------------------------
[2008-02-02 20:22:34] jani@php.net
Where did you get the idea that that should work in the first place?
The correct way:
foo="{$FOO}barian"
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/44019
--
Edit this bug report at http://bugs.php.net/?id=44019&edit=1