PHP CSV export met komma als waarde

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yoeri Achterbergen

Yoeri Achterbergen

03/10/2018 00:17:56
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'"'.,.'"'
Gewijzigd op 03/10/2018 00:19:22 door Yoeri Achterbergen
 
PHP hulp

PHP hulp

10/07/2020 23:26:06
 
Ozzie PHP

Ozzie PHP

03/10/2018 00:29:22
Quote Anchor link
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 -
Beheerder

- Ariën -

03/10/2018 00:34:52
Quote Anchor link
@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?

Antwoord:
https://stackoverflow.com/questions/7545733/write-a-comma-in-a-csv-file-with-php
Gewijzigd op 03/10/2018 00:35:21 door - Ariën -
 
Ozzie PHP

Ozzie PHP

03/10/2018 00:41:05
Quote Anchor link
- 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? :-/
Gewijzigd op 03/10/2018 00:42:11 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

03/10/2018 00:50:19
Quote Anchor link
CSV kan probleemloos komma's gebruiken in de waarden zelf, dan worden de waarden gewoon omgeven door quotes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
fputcsv($fp, array('hier', 'je', 'velden', 'desnoods met komma, zie je?'));
?>
 
- Ariën -
Beheerder

- Ariën -

03/10/2018 00:53:04
Quote Anchor link
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*
Gewijzigd op 03/10/2018 00:55:59 door - Ariën -
 
Yoeri Achterbergen

Yoeri Achterbergen

03/10/2018 14:00:28
Quote Anchor link
Heb het opgelost door de explode van , naar een + te veranderen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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);
?>
 
Adoptive Solution

Adoptive Solution

03/10/2018 14:52:08
Quote Anchor link
Raadpleeg de handleiding en je hoeft geen kunstgrepen toe te passen :

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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);
?>


Toevoeging op 03/10/2018 15:01:57:

En als de 2 waarden op 1 regel moeten komen :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$data = array(
    array('veld1,veld2',
    'Hier een komma,Default')
);
 
Ben van Velzen

Ben van Velzen

03/10/2018 15:14:11
Quote Anchor link
Waarom gebruik je überhaupt een explode? Je kan toch ook je array zo opbouwen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$data
= array(
   array('veld1', 'veld2'),
   array('veld met komma, enzo', 'veld4');
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.