Hello David,
i looked up the fputcsv() magic in the file manually and agree that this
is fairly correct (as i wrote before). But when i execute the test the
second var_export() is supposed to show the input from the .phpt file.
Unfortunatley i get a FAIL from run-tests.php:
FAIL various fputcsv() functionality tests [ext/standard/tests/file/fputcsv.phpt]
040+ 16 => 'aaa,"\\"bbb",ccc',
041+ 17 => 'aaa"\\"a""","bbb"',
042+ 18 => '"\\""","aaa"""',
043+ 19 => '"\\"""",aaa
044+ ',
040- 16 => 'aaa,"\\"bbb,ccc',
041- 17 => 'aaa"\\"a","bbb"',
042- 18 => '"\\"","aaa"',
043- 19 => '"\\""",aaa',marcus@frodo /usr/src/php-cvs $
Care to look into this (done with current HEAD)?
best regards
marcus
Thursday, September 2, 2004, 6:17:51 PM, you wrote:
> Marcus Boerger wrote:
>> Hello David,
>>
>> as promised i looked at the patch. Besides a small misstake it looks
>> good. But it seems to work different then fgetcsv(). In other words if
>> you write using fputcsv() you are not sure to get the same back with
>> fgetcsv(). Though my current opinion is that fputcsv() is doing it right.
>> The attached patch includes a testfile that demonstrates the problem.
>>
>> anyone having thoughts?
> I agree that if you write something with fputcsv() and then read it with
> fgetcsv() you should get back what you started with.
> I don't see what's broken though. (Maybe I am misunderstanding your test
> cases.) The original array in the test file is:
>> +$list = array (
>> + 0 => 'aaa,bbb',
>> + 1 => 'aaa,"bbb"',
>> + 2 => '"aaa","bbb"',
>> + 3 => 'aaa,bbb',
>> + 4 => '"aaa",bbb',
>> + 5 => '"aaa", "bbb"',
>> + 6 => ',',
>> + 7 => 'aaa,',
>> + 8 => ',"aaa"',
>> + 9 => '"",""',
>> + 10 => '"""""",',
>> + 11 => '""""",aaa',
>> + 12 => 'aaa,bbb ',
>> + 13 => 'aaa,"bbb "',
>> + 14 => 'aaa"aaa","bbb"bbb',
>> + 15 => 'aaa"aaa""",bbb',
>> + 16 => 'aaa,"\\"bbb,ccc',
>> + 17 => 'aaa"\\"a","bbb"',
>> + 18 => '"\\"","aaa"',
>> + 19 => '"\\""",aaa',
> And then what gets printed out by fputcsv() is this: (which is
> different, but that's OK, since fputcsv() has worked its encoding magic):
>> +$list = array (
>> + 0 => 'aaa,bbb',
>> + 1 => 'aaa,"""bbb"""',
>> + 2 => '"""aaa""","""bbb"""',
>> + 3 => 'aaa,bbb',
>> + 4 => '"""aaa""",bbb',
>> + 5 => '"""aaa"""," ""bbb"""',
>> + 6 => ',',
>> + 7 => 'aaa,',
>> + 8 => ',"""aaa"""',
>> + 9 => '"""""",""""""',
>> + 10 => '"""""""""""""",',
>> + 11 => '"""""""""""",aaa',
>> + 12 => 'aaa,"bbb "',
>> + 13 => 'aaa,"""bbb """',
>> + 14 => '"aaa""aaa""","""bbb""bbb"',
>> + 15 => '"aaa""aaa""""""",bbb',
>> + 16 => 'aaa,"""\\""bbb",ccc',
>> + 17 => '"aaa""\\""a""","""bbb"""',
>> + 18 => '"""\\""""","""aaa"""',
>> + 19 => '"""\\""""""",aaa',
>> +);
> And then this is the array after being read in by fgetcsv():
>> +$list = array (
>> + 0 => 'aaa,bbb',
>> + 1 => 'aaa,"bbb"',
>> + 2 => '"aaa","bbb"',
>> + 3 => 'aaa,bbb',
>> + 4 => '"aaa",bbb',
>> + 5 => '"aaa", "bbb"',
>> + 6 => ',',
>> + 7 => 'aaa,',
>> + 8 => ',"aaa"',
>> + 9 => '"",""',
>> + 10 => '"""""",',
>> + 11 => '""""",aaa',
>> + 12 => 'aaa,bbb ',
>> + 13 => 'aaa,"bbb "',
>> + 14 => 'aaa"aaa","bbb"bbb',
>> + 15 => 'aaa"aaa""",bbb',
>> + 16 => 'aaa,"\\"bbb,ccc',
>> + 17 => 'aaa"\\"a","bbb"',
>> + 18 => '"\\"","aaa"',
>> + 19 => '"\\""",aaa',
>> +);
> Which seems to be the same as the original array?
> David
--
Best regards,
Marcus mailto:helly@php.net