Edit report at https://bugs.php.net/bug.php?id=63512&edit=1
ID: 63512 Updated by: larue...@php.net Reported by: arjen at react dot com Summary: parse_ini_file() with INI_SCANNER_RAW removes quotes from value. Status: Open Type: Bug Package: Filesystem function related Operating System: All PHP Version: 5.3.18 -Assigned To: +Assigned To: pierrick Block user comment: N Private report: N New Comment: pierrick, do you have time to look at this? thanks :) Previous Comments: ------------------------------------------------------------------------ [2012-11-14 12:14:29] arjen at react dot com Warning: expected result and actual result are swapped! :o ------------------------------------------------------------------------ [2012-11-14 11:53:41] arjen at react dot com Description: ------------ An option value containing a constant followed by an quoted string is transformed in constant string: CONSTANT "string" => CONSTANT string This is broken since 5.3.15/5.4.5, probably by fixing https://bugs.php.net/bug.php?id=51094 See http://3v4l.org/VkQgF And INI_SCANNER_RAW isn't really raw, as quotes are removed anyway. For value = "string" I would expect array('value' => '"string"') as result, so one can differentiate between value = "CONSTANT" and value = CONSTANT. Test script: --------------- <?php define('INSTALL_ROOT', "meukee!"); $array = parse_ini_string(' int = 123 constant = INSTALL_ROOT quotedString = "string" a = INSTALL_ROOT "waa" b = "INSTALL_ROOT" c = "waa" INSTALL_ROOT d = INSTALL_ROOT "INSTALL_ROOT"', false, INI_SCANNER_RAW); var_dump($array); Expected result: ---------------- array(7) { ["int"]=> string(3) "123" ["constant"]=> string(12) "INSTALL_ROOT" ["quotedString"]=> string(6) "string" ["a"]=> string(16) "INSTALL_ROOT waa" ["b"]=> string(12) "INSTALL_ROOT" ["c"]=> string(16) "waa INSTALL_ROOT" ["d"]=> string(25) "INSTALL_ROOT INSTALL_ROOT" } Actual result: -------------- array(7) { ["int"]=> string(3) "123" ["constant"]=> string(12) "INSTALL_ROOT" ["quotedString"]=> string(6) "string" ["a"]=> string(18) "INSTALL_ROOT "waa"" ["b"]=> string(12) "INSTALL_ROOT" ["c"]=> string(18) ""waa" INSTALL_ROOT" ["d"]=> string(27) "INSTALL_ROOT "INSTALL_ROOT"" } even better: array(7) { ["int"]=> string(3) "123" ["constant"]=> string(12) "INSTALL_ROOT" ["quotedString"]=> string(6) ""string"" ["a"]=> string(18) "INSTALL_ROOT "waa"" ["b"]=> string(12) "INSTALL_ROOT" ["c"]=> string(18) ""waa" INSTALL_ROOT" ["d"]=> string(27) "INSTALL_ROOT "INSTALL_ROOT"" } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=63512&edit=1