Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: fgetcsv ja heittomerkki

B_R_H [22.01.2010 14:03:42]

#

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?

Short Php [22.01.2010 15:59:20]

#

En nyt ole varma mutta $_SESSION['raja'] = "\'"; saattaa toimia. Eli tuo \ laitetaan tuonne session määrittämiseen.

B_R_H [22.01.2010 16:22:30]

#

Kokeilin, mutta ei vaikutusta ja molemmissa tapauksissa SESSION-taulukossa opn sama arvo eli \'

Lisää ideoita?

Short Php [22.01.2010 17:19:54]

#

Entäs jos tuo ei toimi koska raja- session sisältää \' eikä pelkän '. Joten fgetcsv voi luulla että haluat erottajaksi \' eikä '.

Teuro [22.01.2010 17:22:30]

#

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.

B_R_H [24.01.2010 11:49:27]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta