Implemented FR #53264 (Add fputcsv method to SplFileObject).

This commit is contained in:
Adam Harvey 2010-11-09 15:07:50 +00:00
parent 150a741fee
commit 6cb7ea4089
17 changed files with 6414 additions and 5 deletions

View file

@ -309,6 +309,9 @@ UPGRADE NOTES - PHP X.Y
- PDO_dblib
- PDO::newRowset()
- SplFileObject
- SplFileObject::fputcsv()
i. New class constants
-

View file

@ -2310,6 +2310,43 @@ SPL_METHOD(SplFileObject, fgetcsv)
}
/* }}} */
/* {{{ proto int SplFileObject::fputcsv(array fields, [string delimiter [, string enclosure]])
Output a field array as a CSV line */
SPL_METHOD(SplFileObject, fputcsv)
{
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
char delimiter = intern->u.file.delimiter, enclosure = intern->u.file.enclosure, escape = intern->u.file.escape;
char *delim = NULL, *enclo = NULL;
int d_len = 0, e_len = 0, ret;
zval *fields = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|ss", &fields, &delim, &d_len, &enclo, &e_len) == SUCCESS) {
switch(ZEND_NUM_ARGS())
{
case 3:
if (e_len != 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "enclosure must be a character");
RETURN_FALSE;
}
enclosure = enclo[0];
/* no break */
case 2:
if (d_len != 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "delimiter must be a character");
RETURN_FALSE;
}
delimiter = delim[0];
/* no break */
case 1:
case 0:
break;
}
ret = php_fputcsv(intern->u.file.stream, fields, delimiter, enclosure, escape TSRMLS_CC);
RETURN_LONG(ret);
}
}
/* }}} */
/* {{{ proto void SplFileObject::setCsvControl([string delimiter = ',' [, string enclosure = '"' [, string escape = '\\']]])
Set the delimiter and enclosure character used in fgetcsv */
SPL_METHOD(SplFileObject, setCsvControl)
@ -2585,6 +2622,12 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetcsv, 0, 0, 0)
ZEND_ARG_INFO(0, enclosure)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fputcsv, 0, 0, 1)
ZEND_ARG_INFO(0, fields)
ZEND_ARG_INFO(0, delimiter)
ZEND_ARG_INFO(0, enclosure)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_flock, 0, 0, 1)
ZEND_ARG_INFO(0, operation)
ZEND_ARG_INFO(1, wouldblock)
@ -2623,6 +2666,7 @@ static const zend_function_entry spl_SplFileObject_functions[] = {
SPL_ME(SplFileObject, valid, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
SPL_ME(SplFileObject, fgets, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
SPL_ME(SplFileObject, fgetcsv, arginfo_file_object_fgetcsv, ZEND_ACC_PUBLIC)
SPL_ME(SplFileObject, fputcsv, arginfo_file_object_fputcsv, ZEND_ACC_PUBLIC)
SPL_ME(SplFileObject, setCsvControl, arginfo_file_object_fgetcsv, ZEND_ACC_PUBLIC)
SPL_ME(SplFileObject, getCsvControl, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
SPL_ME(SplFileObject, flock, arginfo_file_object_flock, ZEND_ACC_PUBLIC)

View file

@ -0,0 +1,105 @@
--TEST--
SplFileObject::fputcsv(): functionality tests
--FILE--
<?php
$file = 'SplFileObject::fputcsv.csv';
$fo = new SplFileObject($file, 'w');
$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',
);
foreach ($list as $v) {
$fo->fputcsv(explode(',', $v));
}
unset($fo);
$res = file($file);
foreach($res as &$val)
{
$val = substr($val, 0, -1);
}
echo '$list = ';var_export($res);echo ";\n";
$fp = fopen($file, "r");
$res = array();
while($l=fgetcsv($fp))
{
$res[] = join(',',$l);
}
fclose($fp);
echo '$list = ';var_export($res);echo ";\n";
?>
===DONE===
<?php exit(0); ?>
--CLEAN--
<?php
unlink($file);
?>
--EXPECT--
$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',
);
$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',
);
===DONE===

View file

@ -0,0 +1,41 @@
--TEST--
SplFileObject::fputcsv(): Checking data after calling the function
--FILE--
<?php
$fo = new SplFileObject('SplFileObject::fputcsv.csv', 'w');
$data = array(1, 2, 'foo', 'haha', array(4, 5, 6), 1.3, null);
$fo->fputcsv($data);
var_dump($data);
?>
--CLEAN--
<?php
unlink('SplFileObject::fputcsv.csv');
?>
--EXPECTF--
Notice: Array to string conversion in %s on line %d
array(7) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
string(3) "foo"
[3]=>
string(4) "haha"
[4]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
[5]=>
float(1.3)
[6]=>
NULL
}

View file

@ -0,0 +1,30 @@
--TEST--
SplFileObject::fputcsv(): error conditions
--FILE--
<?php
$fo = new SplFileObject('SplFileObject::fputcsv.csv', 'w');
echo "*** Testing error conditions ***\n";
// zero argument
echo "-- Testing fputcsv() with zero argument --\n";
var_dump( $fo->fputcsv() );
// more than expected no. of args
echo "-- Testing fputcsv() with more than expected number of arguments --\n";
$fields = array("fld1", "fld2");
$delim = ";";
$enclosure ="\"";
var_dump( $fo->fputcsv($fields, $delim, $enclosure, $fo) );
echo "Done\n";
--EXPECTF--
*** Testing error conditions ***
-- Testing fputcsv() with zero argument --
Warning: SplFileObject::fputcsv() expects at least 1 parameter, 0 given in %s on line %d
NULL
-- Testing fputcsv() with more than expected number of arguments --
Warning: SplFileObject::fputcsv() expects at most 3 parameters, 4 given in %s on line %d
NULL
Done

View file

@ -0,0 +1,826 @@
--TEST--
Test fputcsv() : usage variations - with all parameters specified
--FILE--
<?php
/* Testing fputcsv() to write to a file when all its parameters are provided */
echo "*** Testing fputcsv() : with all parameters specified ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water','fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation1.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
var_dump( $fo->fputcsv($csv_field, $delimiter, $enclosure) );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with all parameters specified ***
-- file opened in r+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in a+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in w+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in x+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in r+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in r+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in r+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in a+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in a+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in a+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in w+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in w+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in w+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in x+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in x+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in x+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in r+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in r+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in r+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in a+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in a+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in a+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in w+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in w+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in w+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in x+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in x+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in x+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
Done

View file

@ -0,0 +1,327 @@
--TEST--
SplFileObject::fputcsv(): Usage variations -- with line without any CSV fields
--FILE--
<?php
/* Testing fputcsv() to write to a file when the field has no CSV format */
echo "*** Testing fputcsv() : with no CSV format in the field ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$fields = array( array('water_fruit\n'),
array("water_fruit\n"),
array("")
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation10.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($fields as $field) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$csv_field = $field;
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field) );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with no CSV format in the field ***
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) ""water_fruit\n"
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) ""water_fruit\n"
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) ""water_fruit\n"
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) ""water_fruit\n"
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) ""water_fruit\n"
"
-- file opened in r+ --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in r+b --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in r+t --
int(15)
int(15)
bool(false)
string(%d) ""water_fruit
"
"
-- file opened in a+ --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in a+b --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in a+t --
int(15)
int(15)
bool(false)
string(%d) ""water_fruit
"
"
-- file opened in w+ --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in w+b --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in w+t --
int(15)
int(15)
bool(false)
string(%d) ""water_fruit
"
"
-- file opened in x+ --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in x+b --
int(15)
int(15)
bool(false)
string(15) ""water_fruit
"
"
-- file opened in x+t --
int(15)
int(15)
bool(false)
string(%d) ""water_fruit
"
"
-- file opened in r+ --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in r+b --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in r+t --
int(1)
int(1)
bool(false)
string(%d) "
"
-- file opened in a+ --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in a+b --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in a+t --
int(1)
int(1)
bool(false)
string(%d) "
"
-- file opened in w+ --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in w+b --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in w+t --
int(1)
int(1)
bool(false)
string(%d) "
"
-- file opened in x+ --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in x+b --
int(1)
int(1)
bool(false)
string(1) "
"
-- file opened in x+t --
int(1)
int(1)
bool(false)
string(%d) "
"
Done

View file

@ -0,0 +1,826 @@
--TEST--
SplFileObject::fputcsv(): Usage variations -- with default enclosure value
--FILE--
<?php
/* Testing fputcsv() to write to a file when default enclosure value is provided */
echo "*** Testing fputcsv() : with default enclosure value ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water,fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation11.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field, $delimiter) );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with default enclosure value ***
-- file opened in r+ --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in r+b --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in r+t --
int(14)
int(14)
bool(false)
string(%d) ""water,fruit"
"
-- file opened in a+ --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in a+b --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in a+t --
int(14)
int(14)
bool(false)
string(%d) ""water,fruit"
"
-- file opened in w+ --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in w+b --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in w+t --
int(14)
int(14)
bool(false)
string(%d) ""water,fruit"
"
-- file opened in x+ --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in x+b --
int(14)
int(14)
bool(false)
string(14) ""water,fruit"
"
-- file opened in x+t --
int(14)
int(14)
bool(false)
string(%d) ""water,fruit"
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) ""&water&:&fruit&"
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) ""&water&:&fruit&"
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) ""&water&:&fruit&"
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) ""&water&:&fruit&"
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) ""&water&:&fruit&"
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) ""=water===fruit="
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) ""=water===fruit="
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) ""=water===fruit="
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) ""=water===fruit="
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) ""=water===fruit="
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) ""-water--fruit-air"
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) ""-water--fruit-air"
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) ""-water--fruit-air"
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) ""-water--fruit-air"
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) ""-water--fruit-air"
"
-- file opened in r+ --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in r+b --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in r+t --
int(24)
int(24)
bool(false)
string(%d) ""-water---fruit---air-"
"
-- file opened in a+ --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in a+b --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in a+t --
int(24)
int(24)
bool(false)
string(%d) ""-water---fruit---air-"
"
-- file opened in w+ --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in w+b --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in w+t --
int(24)
int(24)
bool(false)
string(%d) ""-water---fruit---air-"
"
-- file opened in x+ --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in x+b --
int(24)
int(24)
bool(false)
string(24) ""-water---fruit---air-"
"
-- file opened in x+t --
int(24)
int(24)
bool(false)
string(%d) ""-water---fruit---air-"
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
Done

View file

@ -0,0 +1,827 @@
--TEST--
SplFileObject::fputcsv(): Usage variations -- with default enclosure and different delimiter
--FILE--
<?php
/* Testing fputcsv() to write to a file when default enclosure value and delimiter value
other than that in the field is provided */
echo "*** Testing fputcsv() : with default enclosure and different delimiter value ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water,fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation12.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field, '+') );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with default enclosure and different delimiter value ***
-- file opened in r+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in a+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in w+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in x+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
Done

View file

@ -0,0 +1,28 @@
--TEST--
Test fputcsv() : usage variations - with default enclosure & delimiter of two chars
--FILE--
<?php
/* Testing fputcsv() to write to a file when default enclosure value and delimiter
of two chars is provided */
echo "*** Testing fputcsv() : with default enclosure & delimiter of two chars ***\n";
$fo = new SplFileObject('SplFileObject::fputcsv.csv', 'w');
var_dump($fo->fputcsv(array('water', 'fruit'), ',,', '"'));
unset($fo);
echo "Done\n";
?>
--CLEAN--
<?php
unlink('SplFileObject::fputcsv.csv');
?>
--EXPECTF--
*** Testing fputcsv() : with default enclosure & delimiter of two chars ***
Warning: SplFileObject::fputcsv(): delimiter must be a character in %s on line %d
bool(false)
Done

View file

@ -0,0 +1,28 @@
--TEST--
Test fputcsv() : usage variations - with enclosure & delimiter of two chars
--FILE--
<?php
/* Testing fputcsv() to write to a file when default enclosure value and delimiter
of two chars is provided and file is opened in read only mode */
echo "*** Testing fputcsv() : with enclosure & delimiter of two chars and file opened in read mode ***\n";
$fo = new SplFileObject('SplFileObject::fputcsv.csv', 'w');
var_dump($fo->fputcsv(array('water', 'fruit'), ',,', '""'));
unset($fo);
echo "Done\n";
?>
--CLEAN--
<?php
unlink('SplFileObject::fputcsv.csv');
?>
--EXPECTF--
*** Testing fputcsv() : with enclosure & delimiter of two chars and file opened in read mode ***
Warning: SplFileObject::fputcsv(): enclosure must be a character in %s on line %d
bool(false)
Done

View file

@ -0,0 +1,826 @@
--TEST--
Test fputcsv() : usage variations - with default arguments value
--FILE--
<?php
/* Testing fputcsv() to write to a file when default arguments values are considered */
echo "*** Testing fputcsv() : with default arguments value ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water','fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation5.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field) );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with default arguments value ***
-- file opened in r+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in a+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in w+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in x+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) ""^water^ ^fruit^"
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) ""^water^ ^fruit^"
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) ""&""""""""&:&""&:,:"":&,&:,,,,"
"
Done

View file

@ -0,0 +1,829 @@
--TEST--
Test fputcsv() : usage variations - with different delimiter and enclosure
--FILE--
<?php
/*
Testing fputcsv() to write to a file when delimiter are different from those
present in the field to be written to the file
*/
echo "*** Testing fputcsv() : with different delimiter and enclosure ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water,fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation6.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field, '+', '%') );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with different delimiter and enclosure ***
-- file opened in r+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in r+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in a+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in a+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in w+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in w+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in x+ --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+b --
int(12)
int(12)
bool(false)
string(12) "water,fruit
"
-- file opened in x+t --
int(12)
int(12)
bool(false)
string(%d) "water,fruit
"
-- file opened in r+ --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in r+b --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in r+t --
int(15)
int(15)
bool(false)
string(%d) ""water","fruit
"
-- file opened in a+ --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in a+b --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in a+t --
int(15)
int(15)
bool(false)
string(%d) ""water","fruit
"
-- file opened in w+ --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in w+b --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in w+t --
int(15)
int(15)
bool(false)
string(%d) ""water","fruit
"
-- file opened in x+ --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in x+b --
int(15)
int(15)
bool(false)
string(15) ""water","fruit
"
-- file opened in x+t --
int(15)
int(15)
bool(false)
string(%d) ""water","fruit
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) ""water","fruit"
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) ""water","fruit"
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) ""water","fruit"
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) ""water","fruit"
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) ""water","fruit"
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "%^water^ ^fruit^%
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "%^water^ ^fruit^%
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "%^water^ ^fruit^%
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "%^water^ ^fruit^%
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "%^water^ ^fruit^%
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) "&water&:&fruit&
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) "&water&:&fruit&
"
-- file opened in r+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in r+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in r+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in a+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in a+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in a+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in w+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in w+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in w+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in x+ --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in x+b --
int(16)
int(16)
bool(false)
string(16) "=water===fruit=
"
-- file opened in x+t --
int(16)
int(16)
bool(false)
string(%d) "=water===fruit=
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "-water--fruit-air
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "-water--fruit-air
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "-water---fruit---air-
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "-water---fruit---air-
"
-- file opened in r+ --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in r+b --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in r+t --
int(24)
int(24)
bool(false)
string(%d) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in a+ --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in a+b --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in a+t --
int(24)
int(24)
bool(false)
string(%d) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in w+ --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in w+b --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in w+t --
int(24)
int(24)
bool(false)
string(%d) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in x+ --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in x+b --
int(24)
int(24)
bool(false)
string(24) "&""""&:&"&:,:":&,&:,,,,
"
-- file opened in x+t --
int(24)
int(24)
bool(false)
string(%d) "&""""&:&"&:,:":&,&:,,,,
"
Done

View file

@ -0,0 +1,829 @@
--TEST--
Test fputcsv() : usage variations - with different delimiter and same enclosure
--FILE--
<?php
/*
Testing fputcsv() to write to a file when enclosure is same but delimiter is different from those
present in the field to be written to the file
*/
echo "*** Testing fputcsv() : with different delimiter and same enclosure ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water','fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation7.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field, '+', $enclosure) );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with different delimiter and same enclosure ***
-- file opened in r+ --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in r+b --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in r+t --
int(12)
int(12)
bool(false)
string(%d) "water+fruit
"
-- file opened in a+ --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in a+b --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in a+t --
int(12)
int(12)
bool(false)
string(%d) "water+fruit
"
-- file opened in w+ --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in w+b --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in w+t --
int(12)
int(12)
bool(false)
string(%d) "water+fruit
"
-- file opened in x+ --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in x+b --
int(12)
int(12)
bool(false)
string(12) "water+fruit
"
-- file opened in x+t --
int(12)
int(12)
bool(false)
string(%d) "water+fruit
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) """"water"",""fruit"
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) """"water"",""fruit"
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) """"water"",""fruit"""
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) """"water"",""fruit"""
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "^^^water^^ ^^fruit^^^
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "^^^water^^ ^^fruit^^^
"
-- file opened in r+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in r+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in r+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in a+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in a+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in a+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in w+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in w+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in w+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in x+ --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in x+b --
int(22)
int(22)
bool(false)
string(22) "&&&water&&:&&fruit&&&
"
-- file opened in x+t --
int(22)
int(22)
bool(false)
string(%d) "&&&water&&:&&fruit&&&
"
-- file opened in r+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in r+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in r+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in a+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in a+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in a+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in w+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in w+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in w+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in x+ --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in x+b --
int(23)
int(23)
bool(false)
string(23) "===water======fruit===
"
-- file opened in x+t --
int(23)
int(23)
bool(false)
string(%d) "===water======fruit===
"
-- file opened in r+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in r+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in r+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in a+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in a+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in a+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in w+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in w+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in w+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in x+ --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in x+b --
int(24)
int(24)
bool(false)
string(24) "---water----fruit--air-
"
-- file opened in x+t --
int(24)
int(24)
bool(false)
string(%d) "---water----fruit--air-
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) "---water------fruit------air---
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) "---water------fruit------air---
"
-- file opened in r+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in r+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in r+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in a+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in a+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in a+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in w+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in w+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in w+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in x+ --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in x+b --
int(32)
int(32)
bool(false)
string(32) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
-- file opened in x+t --
int(32)
int(32)
bool(false)
string(%d) "&&&""""&&:&&"&&:,:":&&,&&:,,,,&
"
Done

View file

@ -0,0 +1,829 @@
--TEST--
Test fputcsv() : usage variations - with same delimiter and different enclosure
--FILE--
<?php
/*
Testing fputcsv() to write to a file when delimiter is same but enclosure is different from those
present in the field to be written to the file
*/
echo "*** Testing fputcsv() : with same delimiter and different enclosure ***\n";
/* the array is with three elements in it. Each element should be read as
1st element is delimiter, 2nd element is enclosure
and 3rd element is csv fields
*/
$csv_lists = array (
array(',', '"', array('water,fruit') ),
array(',', '"', array('"water","fruit') ),
array(',', '"', array('"water","fruit"') ),
array(' ', '^', array('^water^ ^fruit^')),
array(':', '&', array('&water&:&fruit&')),
array('=', '=', array('=water===fruit=')),
array('-', '-', array('-water--fruit-air')),
array('-', '-', array('-water---fruit---air-')),
array(':', '&', array('&""""&:&"&:,:":&,&:,,,,'))
);
$file_path = dirname(__FILE__);
$file = "$file_path/fputcsv_variation8.tmp";
$file_modes = array ("r+", "r+b", "r+t",
"a+", "a+b", "a+t",
"w+", "w+b", "w+t",
"x+", "x+b", "x+t");
$loop_counter = 1;
foreach ($csv_lists as $csv_list) {
for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
echo "\n-- file opened in $file_modes[$mode_counter] --\n";
// create the file and add the content with has csv fields
if ( strstr($file_modes[$mode_counter], "r") ) {
$fo = new SplFileObject($file, 'w');
} else {
$fo = new SplFileObject($file, $file_modes[$mode_counter]);
}
$delimiter = $csv_list[0];
$enclosure = $csv_list[1];
$csv_field = $csv_list[2];
// write to a file in csv format
var_dump( $fo->fputcsv($csv_field, $delimiter, '+') );
// check the file pointer position and eof
var_dump( $fo->ftell() );
var_dump( $fo->eof() );
//close the file
unset($fo);
// print the file contents
var_dump( file_get_contents($file) );
//delete file
unlink($file);
} //end of mode loop
} // end of foreach
echo "Done\n";
?>
--EXPECTF--
*** Testing fputcsv() : with same delimiter and different enclosure ***
-- file opened in r+ --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in r+b --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in r+t --
int(14)
int(14)
bool(false)
string(%d) "+water,fruit+
"
-- file opened in a+ --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in a+b --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in a+t --
int(14)
int(14)
bool(false)
string(%d) "+water,fruit+
"
-- file opened in w+ --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in w+b --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in w+t --
int(14)
int(14)
bool(false)
string(%d) "+water,fruit+
"
-- file opened in x+ --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in x+b --
int(14)
int(14)
bool(false)
string(14) "+water,fruit+
"
-- file opened in x+t --
int(14)
int(14)
bool(false)
string(%d) "+water,fruit+
"
-- file opened in r+ --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in r+b --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in r+t --
int(17)
int(17)
bool(false)
string(%d) "+"water","fruit+
"
-- file opened in a+ --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in a+b --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in a+t --
int(17)
int(17)
bool(false)
string(%d) "+"water","fruit+
"
-- file opened in w+ --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in w+b --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in w+t --
int(17)
int(17)
bool(false)
string(%d) "+"water","fruit+
"
-- file opened in x+ --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in x+b --
int(17)
int(17)
bool(false)
string(17) "+"water","fruit+
"
-- file opened in x+t --
int(17)
int(17)
bool(false)
string(%d) "+"water","fruit+
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "+"water","fruit"+
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "+"water","fruit"+
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "+"water","fruit"+
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "+"water","fruit"+
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "+"water","fruit"+
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "+^water^ ^fruit^+
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "+^water^ ^fruit^+
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "+^water^ ^fruit^+
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "+^water^ ^fruit^+
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "+^water^ ^fruit^+
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "+&water&:&fruit&+
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "+&water&:&fruit&+
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "+&water&:&fruit&+
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "+&water&:&fruit&+
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "+&water&:&fruit&+
"
-- file opened in r+ --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in r+b --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in r+t --
int(18)
int(18)
bool(false)
string(%d) "+=water===fruit=+
"
-- file opened in a+ --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in a+b --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in a+t --
int(18)
int(18)
bool(false)
string(%d) "+=water===fruit=+
"
-- file opened in w+ --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in w+b --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in w+t --
int(18)
int(18)
bool(false)
string(%d) "+=water===fruit=+
"
-- file opened in x+ --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in x+b --
int(18)
int(18)
bool(false)
string(18) "+=water===fruit=+
"
-- file opened in x+t --
int(18)
int(18)
bool(false)
string(%d) "+=water===fruit=+
"
-- file opened in r+ --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in r+b --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in r+t --
int(20)
int(20)
bool(false)
string(%d) "+-water--fruit-air+
"
-- file opened in a+ --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in a+b --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in a+t --
int(20)
int(20)
bool(false)
string(%d) "+-water--fruit-air+
"
-- file opened in w+ --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in w+b --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in w+t --
int(20)
int(20)
bool(false)
string(%d) "+-water--fruit-air+
"
-- file opened in x+ --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in x+b --
int(20)
int(20)
bool(false)
string(20) "+-water--fruit-air+
"
-- file opened in x+t --
int(20)
int(20)
bool(false)
string(%d) "+-water--fruit-air+
"
-- file opened in r+ --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in r+b --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in r+t --
int(24)
int(24)
bool(false)
string(%d) "+-water---fruit---air-+
"
-- file opened in a+ --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in a+b --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in a+t --
int(24)
int(24)
bool(false)
string(%d) "+-water---fruit---air-+
"
-- file opened in w+ --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in w+b --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in w+t --
int(24)
int(24)
bool(false)
string(%d) "+-water---fruit---air-+
"
-- file opened in x+ --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in x+b --
int(24)
int(24)
bool(false)
string(24) "+-water---fruit---air-+
"
-- file opened in x+t --
int(24)
int(24)
bool(false)
string(%d) "+-water---fruit---air-+
"
-- file opened in r+ --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in r+b --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in r+t --
int(26)
int(26)
bool(false)
string(%d) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in a+ --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in a+b --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in a+t --
int(26)
int(26)
bool(false)
string(%d) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in w+ --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in w+b --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in w+t --
int(26)
int(26)
bool(false)
string(%d) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in x+ --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in x+b --
int(26)
int(26)
bool(false)
string(26) "+&""""&:&"&:,:":&,&:,,,,+
"
-- file opened in x+t --
int(26)
int(26)
bool(false)
string(%d) "+&""""&:&"&:,:":&,&:,,,,+
"
Done

View file

@ -1845,13 +1845,10 @@ PHP_FUNCTION(fputcsv)
char enclosure = '"'; /* allow this to be set as parameter */
const char escape_char = '\\';
php_stream *stream;
zval *fp = NULL, *fields = NULL;
int ret;
zval *fp = NULL, *fields = NULL, **field_tmp = NULL, field;
char *delimiter_str = NULL, *enclosure_str = NULL;
int delimiter_str_len = 0, enclosure_str_len = 0;
HashPosition pos;
int count, i = 0;
smart_str csvline = {0};
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|ss",
&fp, &fields, &delimiter_str, &delimiter_str_len,
@ -1885,6 +1882,19 @@ PHP_FUNCTION(fputcsv)
PHP_STREAM_TO_ZVAL(stream, &fp);
ret = php_fputcsv(stream, fields, delimiter, enclosure, escape_char TSRMLS_CC);
RETURN_LONG(ret);
}
/* }}} */
/* {{{ PHPAPI int php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, char escape_char TSRMLS_DC) */
PHPAPI int php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, char escape_char TSRMLS_DC)
{
int count, i = 0, ret;
zval **field_tmp = NULL, field;
smart_str csvline = {0};
HashPosition pos;
count = zend_hash_num_elements(Z_ARRVAL_P(fields));
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(fields), &pos);
while (zend_hash_get_current_data_ex(Z_ARRVAL_P(fields), (void **) &field_tmp, &pos) == SUCCESS) {
@ -1950,7 +1960,7 @@ PHP_FUNCTION(fputcsv)
smart_str_free(&csvline);
RETURN_LONG(ret);
return ret;
}
/* }}} */

View file

@ -80,6 +80,7 @@ PHPAPI int php_copy_file_ctx(char *src, char *dest, int src_chk, php_stream_cont
PHPAPI int php_mkdir_ex(char *dir, long mode, int options TSRMLS_DC);
PHPAPI int php_mkdir(char *dir, long mode TSRMLS_DC);
PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char escape_char, size_t buf_len, char *buf, zval *return_value TSRMLS_DC);
PHPAPI int php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, char escape_char TSRMLS_DC);
#define META_DEF_BUFSIZE 8192