ugrás a tartalomhoz

CSV első karaktere

simisoma · 2015. Jún. 19. (P), 10.19
Sziasztok,

PHP-vel letöltök egy utf8-as csv fájlt, és amikor fel akartam dolgozni, nem sikerült... belekerül folyamatosan az első karakternek egy speciális karakter (egy pici pötty).

Hogyan tudom megoldani, hogy ha a csv file nem " (aposztróffal) kezdődik akkor addig törölje a karaktereket. és " (aposztróffal) kezdődjön.

Pont a fejlécet érinti az első sort így azt eredményezi, hogy a tömb értéke:

["Azonosító"] --> értéke

Ezt pedig nem tudom elérni valamiért így próbálom:

print $ertek['"Azonosító"']; // De nem értelmezi....

a többi érték már jó nem aposztrófos....

így néz ki:
Array
(
["Cikkszám"] => 4897033645539
[Termék Név] => Astrum USB 2.0 Hub 4 kimenettel fehér színben UH-U204R WH
[Státusz] => 1
[Nettó Ár] => 1102.362205
[Bruttó Ár] => 1400
)

kérlek segítsetek, hogy elérjem az azonasító értéket is :-)

Köszi!!
 
1

Biztos, hogy nem egy BOM

kuka · 2015. Jún. 19. (P), 10.45
Biztos, hogy nem egy BOM (Byte order mark) karakter van ott? Amely esetben nem CSV hiba, hanem karakter kódolás nézeteltérés és nem törléssel, hanem konverzióval kellene megoldani.
3

Kódolás

simisoma · 2015. Jún. 19. (P), 11.05
És egy fájlt, hogyan tudok utf-8 ra átalakítani php-val?
4

Hát én sohasem PHP-val

kuka · 2015. Jún. 19. (P), 12.35
Hát én sohasem PHP-val csináltam. Most utánanézve, úgy néz ki, hogy nem is érdemes konvertálásba bonyolódni, bőven elegendő a BOM karakter 3 byte-ját eltávolítani. A legegyszerűbb talán ha olvasáskor egyszerűen átugrod:
  • megnyitod az állományt
  • kiolvasol 3 byte-nyit
  • ha a kiolvasott 3 byte nem 0xEF, 0xBB és 0xBF, akkor visszaugrasz az állomány elejére: fseek($allomany, 0)
  • beolvasod a CSV tartalmat

Persze ha valami CSV kezelő osztályt használsz amely maga nyissa/csukja az állományt, akkor ez az út kevésbbé járható.
5

Kivitelezés

simisoma · 2015. Jún. 19. (P), 14.47
Abban tudnátok segíteni, hogy kell kivitelezni:

- letöltöm egy külső oldalról:
$url  = 'http://valami.hu/valami.csv';
    $path = 'file.csv';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
    $data = curl_exec($ch);
 
    curl_close($ch);
 
    file_put_contents($path, $data);
Akkor megvan a file. hogyan távolítsam el a szükségtelen dom karaktert és mentsem el annélkül. A file egyépként utf-8 kódolású.

Köszi: Peti
6

Hát ha már ott van a „nyers”

kuka · 2015. Jún. 19. (P), 15.04
Hát ha már ott van a „nyers” adat egy változóban, akkor legsimább ha még állományba írás előtt megtisztítod, például a James Cundle által a PHP dokumentációhoz hozzáfűzött removeBOM() függvénnyel.
2

Nem lehet, hogy a fájl

spapp · 2015. Jún. 19. (P), 10.51
Nem lehet, hogy a fájl BOM-mal kezdődik?