17. november 2003 - 12:52
Der er
21 kommentarer og 1 løsning
Opdeling af streng på komma
Hej.. jeg har et lille problem. jeg har denne streng. "12138722","Standard, The","Carman","149.00","1993","0","R 02",0,0,0 den skal jeg have komma sepereret ind i et array. problemet er bare at titlen (Standard, The) står med et komma. kan man undgå dette komma ?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
17. november 2003 - 12:57
#1
Dit konkrete eksempel kan løses med $s= '"12138722","Standard, The","Carman","149.00","1993","0","R 02",0,0,0'; preg_match_all('/"[^"]*"|[^,]+/',$s,$r); print "<xmp>\n"; print_r($r); print "</xmp>\n"; som udskriver [0] => "12138722" [1] => "Standard, The" [2] => "Carman" [3] => "149.00" [4] => "1993" [5] => "0" [6] => "R 02" [7] => 0 [8] => 0 [9] => 0 Det bliver en kende mere kompliceret hvis der også står "-ere i teksterne.
17. november 2003 - 13:07
#2
okay. - det er bare kanon.. hvordan er det så lige jeg finder længden af et array ?
17. november 2003 - 13:07
#3
smider du lige et svar ?
Slettet bruger
17. november 2003 - 13:11
#4
Et arrays længde kan findes med count() eller sizeof()
17. november 2003 - 13:14
#5
Joh, men, lad os nu lige .... Er du sikker på at dette er den mest generelle form du kommer ud for?
17. november 2003 - 13:18
#6
sidder lige og leger lidt det du har lavet.. er det helt forkert antaget, at $r er selve arrayet.. jeg kan nemlig ikke få den til at udskrive, når jeg kører den igennem en for løkke - ang. formen, så skulle den se sådan ud hvergang, men kan man måske lave en kontrol yderligere hvor, den ser bort fra "-erne
Slettet bruger
17. november 2003 - 13:18
#7
Det ligner noget DVD film prisliste, så mon ikke der kan snige sig et - ind?
17. november 2003 - 13:21
#8
Ok, det er $r[0][0], $r[0][1], $r[0][2], ... osc
17. november 2003 - 13:22
#9
og størrelsen får du med count($r[0])
17. november 2003 - 13:28
#10
Jeg har lige været ved at kontrollere hele teksten.. der er nogle linjer, hvori der står "-ere.. har du en løsning til denne ? der skal nok komme flere point i puljen så :-)
17. november 2003 - 13:28
#11
lige et spørgsmål uden for kategori: hedder du tilfældigvis "frank" til mellemnavn?
17. november 2003 - 13:29
#12
Hvordan ser det ude med de "-ere ?
17. november 2003 - 13:30
#13
her er et eks. "46076322","Bach: Magnificat - ""Ich habe genug""","Naxos","59.75","1998","0","R 16",1,0,0
17. november 2003 - 13:31
#14
Ja, nemlig - de er dublerede ;) 2 secs - og nej da, du skal ikke give flere point
17. november 2003 - 13:39
#15
Prøv at lege med dette: function f($a,$b) { return str_replace('""','"',$a.$b); } $s= '"12138722","Standard, ""nope"" The","Carman","149.00","1993","0","R 02",0,0,0'; preg_match_all('/"(([^"]|"")*)"|([^,]+)/',$s,$r); $a = array_map("f",$r[1],$r[3]); print "<xmp>\n"; print_r($a); print "</xmp>\n"; for ($i=0;$i<count($a);$i++) { print "$i: $a[$i]<br>\n"; } Det udskriver i for-løkken til sidst: 0: 12138722<br> 1: Standard, "nope" The<br> 2: Carman<br> 3: 149.00<br> 4: 1993<br> 5: 0<br> 6: R 02<br> 7: 0<br> 8: 0<br> 9: 0<br>
17. november 2003 - 13:49
#17
Eksempel $f=fopen("fil.csv","r"); while ($data = fgetcsv ($f, 1000, ",", '"')) { $num = count ($data); print "<p> $num fields in line $row: <br>\n"; $row++; for ($c=0; $c < $num; $c++) { print $data[$c] . "<br>\n"; } } fclose ($f); I en lidt ældre PHP er "-delimiter fast og du skal nøjes med while ($data = fgetcsv ($f, 1000, ",")) {
17. november 2003 - 14:50
#18
tak for hjælpen.. :-) nu kører det :-) smider du lige et svar ?
17. november 2003 - 14:57
#19
hvad bruger du så?
17. november 2003 - 15:15
#20
det hele virkede jo efter hensigten .. men jeg valgte den nemme løsning, og brugte fgetcsv();
17. november 2003 - 15:17
#21
;) Øv - regulære udtryk er sjovere... Men nu er da et sted at henvise til i fremtiden, og så kan man vælge hvad man vil!
17. november 2003 - 15:34
#22
jeps.. du skal i hvert fald have tak for hjælpen. jeg har lært rigtig meget ved det..
Vi tilbyder markedets bedste kurser inden for webudvikling