Avatar billede tommya Nybegynder
26. august 2005 - 14:44 Der er 6 kommentarer og
1 løsning

Splitte en kommasepereret argument linie

Jeg har en linie med argumenter som kan være tal og tekster

Hvis det er et tal er det enten et heltal eller et floating point tal, disse skrives lige ud, altså 123 eller 123.34 Er det tekster er der enten " eller ' udenom. Argumenter er adskilt af , (komma) undtagen self. når det er inde i en tekststreng.

Jeg bruger PHP's perl regular expressions.

Således at linien: 12, 45.77, "Dette er en 'test', med en lang streng"

Bliver delt op til:
12
45.77
"Dette er en 'test', med en lang streng"

Nogen idéer til hvordan jeg kan gøre det, jeg kan sagtens dele den op ved alle kommaer, men vil undgå det komma der er inde i strengen.
Avatar billede erikjacobsen Ekspert
26. august 2005 - 15:09 #1
Du kan gøre noget i denne stil:

$s="12, 45.77, \"Dette er en 'test', med en lang streng\", 'og mere af samme \"slags\"'";

while ($s=~/([\d.]+|"[^"]*?"|'[^']*')/g) {
  print $1."\n";
}
Avatar billede tommya Nybegynder
26. august 2005 - 15:16 #2
Jeg kan ikke køre den kode, jeg får Parse Error. Er den kode specifik til PHP 5? for jeg kører med 4.

Når jeg smækker det ind i en preg_match får jeg unknown identifier 'g'
Avatar billede erikjacobsen Ekspert
26. august 2005 - 15:28 #3
Nej, jeg læste det som at brugte Perl. Du skal nok bruge preg_match_all
Avatar billede tommya Nybegynder
26. august 2005 - 15:28 #4
Det virkede fjernede g parameteren som jeg gik ud fra stod for greedy og brugte en preg_match_all... hvis du smider et svar giver jeg point :) takker
Avatar billede erikjacobsen Ekspert
26. august 2005 - 16:35 #5
Nej tak, jeg samler slet ikke på point. Svar selv, accepter eget svar.
Avatar billede tommya Nybegynder
26. august 2005 - 17:49 #6
Jeg siger tak for hjælpen, du har reddet dagen :)
Avatar billede roenving Novice
27. august 2005 - 00:28 #7
-- og g betyder global, ikke greedy, for det er regexps altid, hvis man ikke begrænser dem !-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester