Zoals de titel al zegt probeer ik een csv export te maken met php.
De functie werkt alleen nu heb ik een veld waar een komma als waarde moet worden gegeven, maar krijg het niet voor elkaar.

<?php
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
$komma = ",";
$data = array(
        'veld1,veld2',
        'Hier een komma,Default'     
);

$fp = fopen('php://output', 'wb');
foreach ( $data as $line ) {
    $val = explode(",", $line);
    fputcsv($fp, $val);
}
fclose($fp);
?>


De komma zorgt ervoor dat hij naar een volgende cel gaat. Hoe kan ik een komma als waarde meegeven?
Onderstaande werkt niet
'"'.,.'"'
Eeuuuhhh ... je snapt toch wel het principe van een CSV-bestand?

CSV staat voor Comma Seperated Values ... ofwel waardes die d.m.v. een komma worden gescheiden.

>> De komma zorgt ervoor dat hij naar een volgende cel gaat.

Precies ... dat is dus ook exact de bedoeling.
- Ariën - op 03/10/2018 00:34:52

@Ozzie: Volgens mij snapt de TS dat wel, en zoekt hij een oplossing. Want hoe moet hij bijvoorbeeld 's-Gravenshage invoeren, of Jaques 'd Ancona?

Uhm Aar ... je kent toch wel het verschil tussen een apostrof en een komma? :-/

CSV kan probleemloos komma's gebruiken in de waarden zelf, dan worden de waarden gewoon omgeven door quotes:

veld1,veld2,"veld met komma, zie je?",etc,etc

De vraag is hier dus waarom je de code zo hebt opgesteld zoals je hebt. fputcsv() doet zelf het beheer over hoe waarden ingevoegd moeten worden:
<?php
fputcsv($fp, array('hier', 'je', 'velden', 'desnoods met komma, zie je?'));
?>
Hm... Euh ja... avond enzo...
*facepalm doet*

Maar dan zou een komma tussen quotes geen probleem mogen zijn. Op sich zouden apostrofs ook bij fout gebruik voor problemen kunnen zorgen.

Wat is de output van de CSV nu dan?

*Slaapje doet*
Heb het opgelost door de explode van , naar een + te veranderen.

<?php
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
$komma = ",";
$data = array(
        'Veld1,t+hallo',
        'input1'     
);

$fp = fopen('php://output', 'wb');
foreach ( $data as $line ) {
    $val = explode("+", $line);//hier ging het mis
    fputcsv($fp, $val);
}
fclose($fp);
?>
Raadpleeg de handleiding en je hoeft geen kunstgrepen toe te passen :

http://php.net/manual/en/function.fputcsv.php

<?php
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
$data = array(
	array('veld1,veld2'),
	array('Hier een komma,Default')    
);
$fp = fopen('php://output', 'wb');
foreach ( $data as $line ) {
	fputcsv($fp, $line);
}
fclose($fp);
?>


[size=xsmall]Toevoeging op 03/10/2018 15:01:57:[/size]

En als de 2 waarden op 1 regel moeten komen :

$data = array(
	array('veld1,veld2',
	'Hier een komma,Default')
);
Waarom gebruik je überhaupt een explode? Je kan toch ook je array zo opbouwen?
<?php
$data = array(
array('veld1', 'veld2'),
array('veld met komma, enzo', 'veld4');
?>

Reageren