Terve,
Olen taas ongelmissa näiden ' ja " merkkien kanssa :-?
Olen sijoittanut koodissa $_SESSION-muuttujiin csv:n käyttämät välimerkit.
<?php $_SESSION['ero']=";"; $_SESSION['raja']="'";
Ja tiedoston data on formaatissa:
'merkki';'malli';'vuosi'
'toyota';'corolla';'1990'
'toyota';'corolla';'2008'
Yritän lukea sitä tällä:
<?php $header = fgetcsv($csvfile,0,$_SESSION['ero'],$_SESSION['raja']); print_r($header); // tulostaa otsikot tyyliin 'merkki' print_r($_SESSION); //raja muuttaja näkyy sessiossa \', kuten pitääkin $header = fgetcsv($csvfile,0,$_SESSION['erotin'],"'"); print_r($header); // tässä headerit näkyy oikein eli merkki
Mitenkä tuo heittomerkin saisi toimimaan muuttujan kautta ok?
En nyt ole varma mutta $_SESSION['raja'] = "\'"; saattaa toimia. Eli tuo \ laitetaan tuonne session määrittämiseen.
Kokeilin, mutta ei vaikutusta ja molemmissa tapauksissa SESSION-taulukossa opn sama arvo eli \'
Lisää ideoita?
Entäs jos tuo ei toimi koska raja- session sisältää \' eikä pelkän '. Joten fgetcsv voi luulla että haluat erottajaksi \' eikä '.
Entä jos parsit sen fgetcsv() funktion mukaan? Rivin pituuden pitäisi olla suurempi kuin suurin mahdollinen rivi. Esimerkissä oli käytetty 1000 merkkiä pituutena, joka varmaankin piisaa aika pitkälle. Eli perus csv-tiedoston lukeminen menee helpoiten antamalla funktiolle sopivan tiedostokahvan tiedostoon.
Short Php kirjoitti:
Joten fgetcsv voi luulla että haluat erottajaksi \' eikä '.
Luultavasti näin siinä käy? Jostakin syystä sijoitus $_SESSION-muuttujaa = "'" vie mukaan \ eli arvo on \'.
Teuro kirjoitti:
Entä jos parsit sen fgetcsv() funktion mukaan?
$header = fgetcsv($csvfile,0,$_SESSION['ero'],$_SESSION['raja']);
Eikös se tuossa juuri näin mene? pituuden ollessa 0, max kokoa ei ole määritelty.
Aihe on jo aika vanha, joten et voi enää vastata siihen.