02. august 2003 - 20:55Der er
17 kommentarer og 1 løsning
Fil-parser
Hello!
Jeg har brug for ideer til hvordan jeg smider indholdet af en bestemt formateret fil ind i en mysql database. Filen er fyldt med "records" der ser sådan ud:
Card Name: Akroma's Blessing Card Color: W Mana Cost: 2W Type & Class: Instant Pow/Tou: Card Text: Creatures you control gain protection from the color of your choice until end of turn. Cycling W (W, Discard this card from your hand: Draw a card.) Flavor Text: The clerics saw her as a divine gift. She saw them only as allies in her war against Phage. Artist: Adam Rex Rarity: U Card #: 1/350
Det forudsætter naturligvis du har en tabel (cards) med kolonnenavne der svarer til. Jeg er lidt i tvivl om du kan få problemer med /#& i kolonnenavnene?
Det ser ud til at være ok at bruge: #&/, hvis man bruger backtics sådan her: -------------- <? $lines = file('text.txt'); $i = 0; foreach ($lines as $line) { if (strstr($line, ": ")) { list($key[$i], $val[$i]) = explode (": ", $line); $i++; }else{ $val[$i-1] .= $line; } } $size = count($val); for ($i=0;$i<$size;$i++){ $val[$i] = "'" .$val[$i]. "'"; $key[$i] = "`" .$key[$i]. "`"; } $keystr = implode(', ', $key); $valstr = implode(', ', $val);
mysql_query("INSERT INTO cards ($keystr) VALUES ($valstr)") or die(mysql_error()); ?>
Ok, fair nok. Jeg forstår bare ikke du ikke kan få mit forslag til at virke, det virker her hos mig. Kan du få pregmatch til at virke er det osse en god løsning. Den med newline er jo lidt kringlet (Jeg lavede osse et krumspring) c",)
Tjaa indholdet af $keystr er lig med "''" og indholdet af $valstr er hele filen. Det fik jeg jo ikke så meget ud af :( Desuden foretrækker jeg at få det ordnet med et reg. expr. da det er mere "rent".
Tjah, jeg var ikke opmærksom på at de 4 mellemrum var en tab. Så her er en fungerende version. Hvor vidt den er mere eller mindre ren end regexp, vil jeg ikke kommentere, men det virker (udskift print med mysql_query).
Tjaa den "virker" da men helt cool er den nu ikke, der er tabs i værdierne og den tager en masse med som den ikke burde snuppe. Jeg ville helt klart foretrække en reg.expr.
Synes godt om
Ny brugerNybegynder
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.