ID: 33981 Updated by: [EMAIL PROTECTED] Reported By: mdc at hotmail dot co dot uk Status: Open -Bug Type: Variables related +Bug Type: Documentation problem Operating System: WinXP/Win200 PHP Version: 5.0.4 New Comment:
That's because &, !, {, }, (, ), and ~ are considered as parts of an expression and can't appear in keynames. It should be documented, probably. Previous Comments: ------------------------------------------------------------------------ [2005-08-03 17:14:21] mdc at hotmail dot co dot uk Description: ------------ When using the parse_ini_file function to parse through a specific section of an ini file ("Applications Packages") the parsing stops whenever the following characters are present in the key()[] Example of ini file: -- [Applicantions Packages] Winamp.ini=INSTALLED Macromedia Shockwave Player 10.ini=INSTALLED Windows (test) Media Player 10 Series.ini=INSTALLED Office XP Security Patch KB830346.ini=INSTALLED Acrobat Reader 6.0.ini=INSTALLED The desired entries in the ini file are output'd to screen as expected until the parsing stops at line 3 and the browser shows: "Warning: Error parsing \\server1\file.ini on line 3 in c:\Inetpub\wwwroot\test\results.php on line 85" (Code snippets included in the next section). I've tried writing additional code to copy the contents to a temporary file, and replace the "illegal" characters with blank spaces, but thats quite inefficent as the ini file can be several hundred lines long and I only need to parse the 20 or 30 lines within it. I've read similar posts regarding this problem, but they're said to be fixed. Reproduce code: --------------- Line 85 of the code is: $settings_array = parse_ini_file($inifile, TRUE); Also relevant, looking for the section "Applications Packages" -- $applications = array_filter($applicationsArray['Applications Packages'], "isInstalledApplications"); -- This is the value to be matched to the keys. -- function isInstalledApplications($var) { return($var == 'INSTALLED' ); } -- Output code. $station is part of the ini file name, which makes up $inifile eg, station1.ini. Could be tidier, I know ;-) -- <?php foreach($applications as $key => $value) { $station = str_replace('.ini', '', $key); $key = str_replace('.ini', '', $key); ?> -- Expected result: ---------------- -- The following items are installed on <workstation name here> Winamp Macromedia Shockwave Player 10 Windows (test) Media Player 10 Series Office XP Security Patch KB830346 Acrobat Reader 6.0 -- Actual result: -------------- -- The following items are installed on <workstation name here> "Warning: Error parsing \\server1\file.ini on line 3 in c:\Inetpub\wwwroot\test\results.php on line 85" Winamp Macromedia Shockwave Player 10 -- ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33981&edit=1