[PHP] Probleem met CSV bestand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 15:23

me1299

$ondertitel

Topicstarter
Ik heb een csv bestand met daarin een hoop aantal velden. Nu wou ik een scriptje schrijven om deze te inserten in de database.

De CSV file ziet er ongeveer zo uit:

code:
1
2
3
4
5
"NetMail 3.1";"NetMailXE 3.1d Update for Windows";"NETMAIL";
"nm310dxe.exe";"N-FILES";"US";"1"

"NetWare 3.11";"TCOPY2.EXE; Copies Trustee Assignments";"TOOLS";
"tcopy2.exe";"N-FILES";"US";"1"


Nu heb de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$fd = fopen("up2date.csv", "r");

while(!feof($fd)) {
    $buffer = fgets($fd, 4096);

    $buffer_exp = explode(";", $buffer);

    $count = 0;

    while($loop_handle = each($buffer_exp)) {
        $count++;

        print($loop_handle['1']);

        if($count == 8) {
            print("<h1>[8 VELDEN]</h1>");
        }

        print("<b>{$count}</b><br>");
    }
    
    print("<br><br>");
}

?>


Wat blijkt nu: sommige records hebben 8 velden. Dit lijkt eigenlijk maarzo omdat er ook in het voorbeeld een row er zo uitziet:

TCOPY2.EXE; Copies Trustee Assignments

Het probleem treed dus op omdat in de cellen zelf een ; staat en hij die ook mee explode.

Is er een manier om ervoor te zorgen dat mijn script er rekening mee houd dat als de ; tussen "" staat hij deze niet mee explode??

[ Voor 45% gewijzigd door me1299 op 03-10-2003 12:17 ]

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Zoiets? :
PHP:
1
explode("\";\"",$buffer_exp);
Of eerst een str_replace doen op ";" naar %splitthis%, en dan daar op exploden. ;)
.edit: maar dit is wel een quickfix oplossing. Je zou eigenlijk regel voor regel moeten scannen en ook slashes in strings moeten converteren en meer van dat soort ongein. :)

[ Voor 63% gewijzigd door RedRose op 03-10-2003 12:29 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 15:23

me1299

$ondertitel

Topicstarter
Ik heb een andere csv file aangeleverd gekregen waarin de seperator een ander karakter was. Nog wel bedankt iig ;)

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

gebruik fgetcsv die heeft het probleem niet...

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 15:23

me1299

$ondertitel

Topicstarter
LuCarD schreef op 03 October 2003 @ 13:02:
gebruik fgetcsv die heeft het probleem niet...
He helemaal geweldig. Ik kwam er net achter dat in sommige velden ook nog een " stond dus dat ging ook al fout. Maar met fgetcsv gaat alles vlekkeloos ;)

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

DeathKnight schreef op 03 October 2003 @ 13:39:
[...]


He helemaal geweldig. Ik kwam er net achter dat in sommige velden ook nog een " stond dus dat ging ook al fout. Maar met fgetcsv gaat alles vlekkeloos ;)
Er is een regel die ik hanteer.

Als ik een eigen functie maak en die functie heeft niet meer dan 10 regels, dan bestaat hoogstwaarschijnlijk de functie al binnen PHP. ;)

Coden is helemaal niet leuk meer, word gewoon te makkelijk gemaakt... :+

Programmer - an organism that turns coffee into software.

Pagina: 1