Req #38052 [Opn->Csd]: parse_ini_file() - escaping double quotes is impossible
| From: | bjori@php.net | Date: | Wed, 15 Dec 2010 19:21:01 +0000 |
| Subject: | Req #38052 [Opn->Csd]: parse_ini_file() - escaping double quotes is impossible | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-157016@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=38052&edit=1
ID: 38052
Updated by: bjori@php.net
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