Edit report at http://bugs.php.net/bug.php?id=38052&edit=1

 ID:                 38052
 Updated by:         [email protected]
 Reported by:        alex at thresholdstate dot com
 Summary:            parse_ini_file() - escaping double quotes is
                     impossible
-Status:             Open
+Status:             Closed
 Type:               Feature/Change Request
-Package:            Feature/Change Request
+Package:            *General Issues
 PHP Version:        4.4.2
-Assigned To:        
+Assigned To:        bjori
 Block user comment: N
 Private report:     N

 New Comment:

This was fixed in 5.3


Previous Comments:
------------------------------------------------------------------------
[2006-07-10 04:27:06] alex at thresholdstate dot com

Not sure I'd describe it as "much better", since it clashes with windows
paths.  Consider:



path = "\"C:\Program Files\blah\""



5.2 would presumably render this as '\C:\Program Files\blah\\', which
loses the distinction between "escaped" quotes and plain backslashes.

------------------------------------------------------------------------
[2006-07-10 04:09:13] judas dot iscariote at gmail dot com

Well..with current 5_2 version I get:



array(2) {

  ["title"]=>

  string(23) "Best Scripting Language"

  ["desc"]=>

  string(42) "See <a href=\http://www.php.net/\>PHP</a>!"

}



although this not what you expect, is much better, since you can use
str_replace() to replace backslashes with double quotes if you want.

------------------------------------------------------------------------
[2006-07-10 01:59:53] alex at thresholdstate dot com

The latest PHP5 I have access to is 5.0.4, and it fails there.

------------------------------------------------------------------------
[2006-07-10 01:43:14] judas dot iscariote at gmail dot com

IT works perfectly fine with a current version of PHP ( in my case 5_2
CVS), so you better try PHP5, you should be using PHP4 anyway..



ps: it is reproducible in current PHP 4_4 CVS, but Im not sure if this
is gonna be fixed (if a bug), wait for official answer.

------------------------------------------------------------------------
[2006-07-10 01:12:36] alex at thresholdstate dot com

Description:
------------
It appears there's no way a value in a .INI file can contain a double
quote character.



Backslash escaping is unsupported.  If some other escaping method is
available, the doc page doesn't mention it.



Example is taken from
http://www.php.net/manual/en/function.parse-ini-file.php#18216, posted
in January 2002.



C-style backslash escaping probably can't be supported due to Windows
paths.  Other escaping methods might be feasible: SQL-style doubled
quote characters, for example.

Reproduce code:
---------------
var_dump(parse_ini_file("example.ini"));



;============================

; Example Configuration File

;============================

[category]

title = "Best Scripting Language"

desc = "See <a href=\"http://www.php.net/\";>PHP</a>!"

Expected result:
----------------
array(2) {

  ["title"]=>

  string(23) "Best Scripting Language"

  ["desc"]=>

  string(13) "See <a href="http://www.php.net/";>PHP</a>!"

}



Actual result:
--------------
PHP Warning:  Error parsing a.ini on line 6

 in Command line code on line 1

array(2) {

  ["title"]=>

  string(23) "Best Scripting Language"

  ["desc"]=>

  string(13) "See <a href=\"

}




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=38052&edit=1

Reply via email to