Avatar billede htx98i17 Professor
14. juni 2012 - 20:05 Der er 17 kommentarer og
1 løsning

lav csv array fra formens textarea

Jeg søger en metode til at lave indtastede data, separeret med komme, i en textarea, om til et array.

Eksempel på indtastet data i textarea:
120,50,1
121,20,0

Af dette skal komme et array med 2 poster/rækker med hver 3 værdier.

Er der nogen som kan hjælpe med det?
Min PHP version understøtter desværre ikke str_getcsv().

Jeg har søgt på funktioner, men kan ikke finde nogen som håndterer linjeskift i textarea.
Avatar billede oomalkeoo Nybegynder
14. juni 2012 - 20:42 #1
Kan nok laves flottere - men er vi ude i noget ala http://wookie.dk/exp ?

--
<?
if(isset($_POST['textareaname'])) {
  $text = trim($_POST['textareaname']);
  $textAr = explode("\n", $text);

  foreach ($textAr as $line) {
    $data[] = explode(',',$line);
  }

  echo "<pre>";
  print_r($data);

}
?>

<form method="POST">
<textarea name="textareaname"></textarea>
<input type="submit" value="Submit" />
</form>
Avatar billede oomalkeoo Nybegynder
14. juni 2012 - 21:16 #2
http://codepad.org/ISPXeG1O - eller sådan :)
Avatar billede olebole Juniormester
14. juni 2012 - 21:16 #3
<ole>

Det er forskelligt, hvad forskellige platforme bruger som newline tegn, så for at være på den sikre side og servicere alle:

    $strTxt = $_POST['txt'];
    $arrLines = array();
    preg_match_all('/(?:^|\r\n|\r|\n)([0-9, ]+)/', $strTxt, $arrMatches);
    foreach ($arrMatches[1] as $k => $v) {
        $arrLines[$k] = explode(',', $v);
    }
    var_dump($arrLines);

/mvh
</bole>
Avatar billede oomalkeoo Nybegynder
14. juni 2012 - 21:34 #4
Burde PHP_EOL ikke fange dem alle?
Avatar billede olebole Juniormester
14. juni 2012 - 21:39 #5
PHP_EOL svarer til serverens newline tegn. Men det hjælper ikke så meget, hvis serverens OS er Linux og klientens er Windows eller Mac  =)
Avatar billede oomalkeoo Nybegynder
14. juni 2012 - 21:42 #6
Good point, jeg kan godt lide din "løsning" på det - det virker lidt gennemtænkt - sammen har vi da en udemærket løsning :)
Avatar billede htx98i17 Professor
14. juni 2012 - 21:55 #7
Tusind tak, det er godt tænkt.
Klienten er netop både pc og iPad.

Jeg må vente med at afprøve til imorgen.
Avatar billede htx98i17 Professor
15. juni 2012 - 14:25 #8
Ole -> Det virker jo præcist som det skal. Hvis I vidste hvilke sidelange hjemmelavede funktioner jeg har prøvet fundet på nettet...

Hvis reglerne skal følges, så er det Ole der skal have point, da det er hans svar jeg bruger?
Avatar billede olebole Juniormester
15. juni 2012 - 14:34 #9
Ellers tak, jeg samler ikke point. Jeg ville give dem til oomalkeoo, som var snublende nær - og så er engagement jo altid belønnelsesværdigt  =)
Avatar billede htx98i17 Professor
15. juni 2012 - 15:01 #10
Det er nemlig rigtig. Hans svar var jo også virkelig godt.

Tusind tak til jer begge. Skønt!
Avatar billede olebole Juniormester
15. juni 2012 - 15:05 #11
You're welcome  =)
Avatar billede oomalkeoo Nybegynder
15. juni 2012 - 21:21 #12
Anytime =D
Avatar billede htx98i17 Professor
16. juni 2012 - 16:59 #13
Et lille ekstra spm:

kan man ekskludere specialtegn i den preg_match? således at kun a-zA-Z0-9 godkendes?
Avatar billede olebole Juniormester
16. juni 2012 - 17:09 #14
Prøv noget i denne stil:

preg_match_all('/(?:^|\r\n|\r|\n)([a-z0-9,]+)/i', $strTxt, $arrMatches);
Avatar billede htx98i17 Professor
16. juni 2012 - 17:18 #15
Forskellen er i'et ik?

Jeg synes ikke lige det gør nogen forskel, kan det passe...
Avatar billede olebole Juniormester
16. juni 2012 - 18:11 #16
Sorry  =)

preg_match_all('/(?:^|\r\n|\r|\n)([a-z0-9]+,[a-z0-9]+,[a-z0-9]+)/i', $strTxt, $arrMatches);
Avatar billede htx98i17 Professor
16. juni 2012 - 18:40 #17
takker det ser faktisk ud til at fungere :)

Jeg har faktisk andre som jeg troede ekskluderede specialtegn:

eks:
preg_match("#[a-zA-ZøæåØÆÅ0-9]{3,50}#", $_POST['pk_label'])

hvad skal man gøre for at den KUN godtager det tal og bogstaver?
Avatar billede olebole Juniormester
16. juni 2012 - 19:27 #18
- komma?  *o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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