13. oktober 2005 - 00:25
Der er
13 kommentarer
RegExp til data parser
Hej, Har følgende input... 1457 54239 ~~¤ Maginot ¤~~ 0 40 5.334 + - 1496 * 5265 ~~¤ Wolff. ¤~~ 0 40 5.117 + - 1514 * 65347 ~~¤ WX_Havkat ¤~~ 0 39 5.080 + - 1515 * 82065 online ~~¤Kimmerne¤~~ 0 40 5.075 + - 1556 108337 ~~¤johnna-tøsen¤~~ 0 56 4.893 + - Nu kunne jeg godt tænke mig at få et array med: første tal, andet tal, tekstreng (uden det eventuelle online), tredie tal, fjerde tal, og femte tal (uden punktum). Altså at denne linie: 1515 * 82065 online ~~¤Kimmerne¤~~ 0 40 5.075 + - blev til $tmp = Array(1515,82065,"~~¤Kimmerne¤~~",0,40,5075); Havde tænkt mig det skulle gøres med regexp... men how...
Annonceindlæg fra Infor
13. oktober 2005 - 01:17
#1
Du kan prøve noget i denne stil if($cnt = preg_match_all("/(\\d+)[\\D]+(\\d+)[^~]+(~~¤[^¤]+¤~~) (\\d+) (\\d+) ([\\d.]+)/", $text, $matches, PREG_SET_ORDER)){ for($i=0; $i<$cnt; $i++){ $tal1 = $matches[$i][1]; $tal2 = $matches[$i][2]; $nick = $matches[$i][3]; $tal3 = $matches[$i][4]; $tal4 = $matches[$i][5]; $tal5 = str_replace(".", "", $matches[$i][6]); echo "$tal1<br>$tal2<br>$nick<br>$tal3<br>$tal4<br>$tal5<hr>"; } }
13. oktober 2005 - 01:40
#2
Denne performer bedre if($cnt = preg_match_all("/^(\\d+)[\\D]+(\\d+)[^~]+(~~¤[^¤]+¤~~) (\\d+) (\\d+) ([\\d.]+)/m", $text, $matches, PREG_SET_ORDER)){
13. oktober 2005 - 06:33
#3
men lader bare ikke til at fange noget som helst......
13. oktober 2005 - 07:53
#4
Det her er det reelle input 623 38416 ~~¤ SIFosien¤~~ (høvding) 5 111 15.736 + - 10 52861 WX_RudeBwoy 0 209 40.128 + - 367 98693 ~~¤Barracuda¤~~ 0 132 18.363 + - 405 108988 ~~¤ Lyngerne ¤~~ 0 167 17.680 + - 434 87185 WX_Odins Disciple 0 146 17.307 + - 456 56599 ~~¤ Ronaldinho ¤~~ 0 175 17.092 + - 473 109119 ~~¤Black Scar¤~~ 0 117 16.880 + - 491 108458 LilleGrimmeLouise 0 116 16.638 + - 493 56468 putero 1 112 16.618 + - 530 28131 ~~¤Flommer¤~~ 0 111 16.299 + - 573 107143 ~~¤ Joms ¤~~ 0 110 16.045 + - 578 56343 Chief SilverDragon 0 109 16.012 + - 619 107969 Mnc_ 0 134 15.762 + - 635 55456 online ~¤Gragans OPMIP¤~ 0 116 15.684 + - 710 89680 online ~~¤LilleUlvOPMIP¤~ 0 106 15.336 + - 716 58996 online ~~¤ Amarth ¤~~ 0 116 15.318 + - 731 31493 ~~¤ Gertrude ¤~~ 0 104 15.184 + - 855 98075 ~~¤Octavii¤~~ 0 110 14.524 + - 884 65347 ~~¤ WX_Havkat ¤~~ 0 103 14.431 + - 911 109125 Runolf - Hævneren 0 103 14.395 + - 923 5265 ~~¤ Wolff. ¤~~ 0 115 14.374 + - 927 54034 Ghettoen [Nor] 0 100 14.349 + - 964 89857 ~~¤Arme Finn¤~~ 0 101 14.138 + - 989 54239 ~~¤ Maginot ¤~~ 0 100 14.112 + - 990 86080 ~~¤Calinka¤~~ 0 100 14.111 + - 993 88141 ~~¤ Mysilini ¤~~ 0 100 14.106 + - 1027 71890 ~~¤Ridder Wolf¤~~ 0 103 13.842 + - 1034 108337 ~~¤johnna-tøsen¤~~ 1 107 13.825 + - 1039 82065 ~~¤Kimmerne¤~~ 0 100 13.809 + - 1048 70811 Patrizia 1 112 13.777 + - 1076 1176 ~~¤Cableguy¤~~ 0 104 13.607 + - 1080 104362 [fu] Sjael \m/ 0 114 13.595 + - 1119 110535 fjols 0 94 13.251 + - 1124 84912 ~~¤ Staal Khan¤~~ 0 97 13.213 + - 1125 64000 Sølvpil 5 95 13.190 + - 1154 108159 online ~~¤ Ynge* ¤~~ 5 92 12.889 + - 1175 110526 ~~xFenrisulvenx~~ 0 92 12.740 + - 1210 102623 Gubi 1 100 12.482 + - 1234 89731 ~~¤ Harry ¤~~ 0 88 12.296 + - 1265 54285 ~~¤KlanBabe¤~~ 0 96 12.016 + - 1273 91787 ~~¤ Sol_OPMIP ¤~~ 5 88 11.952 + - 1278 102108 WX_DåseMakrellen 0 158 11.915 + - 1293 34614 ~~¤ Einstein ¤~~ 0 80 11.726 + - 1302 109411 ~~¤ Shifter II ¤~~ 0 83 11.626 + - 1620 4931 ~~¤ Frigg ¤~~ 0 97 8.471 + -
13. oktober 2005 - 08:45
#5
Hvad med denne: preg_match_all('/^(\\d+)\\s(\\d+)\\s(.+?)\\s(\\d+)\\s(\\d+)\\s(\\d+.\\d+)\\s\\s\\+\\s\\-/m', $input, $output);
13. oktober 2005 - 12:51
#6
Jeg skulle lige til at lave en, men jakobdo har vist lavet den jeg ville :)
13. oktober 2005 - 13:42
#7
Hej Det virker sgi stadig ikke... hmmm kan i prøve at forklare den linie... så kan det være jeg selv kan få øje på fejlen?
13. oktober 2005 - 13:54
#8
^ = starten af linien. (\\d+) = 1 eller flere tal \\s = mellemrum (\\d+) = se ovenover \\s = se ovenover (.+?) = alle tegn indtil den møder et mellemrum og tal... \\s = se ovenover (\\d+) = se ovenover \\s = se ovenover (\\d+) = se ovenover \\s = se ovenover (\\d+.\\d+) = et eller flere tal, et punktum og et eller flere tal \\s\\s = 2 mellemrum \\+\\s \\- = et minus-tegn ( - ) /m = ^$ virker på linier og ikke hel tekst.
13. oktober 2005 - 16:22
#9
Det er denne del der ikke virker \\s\\+\\s\\-
13. oktober 2005 - 16:24
#10
Det tekst du har smidt her i tråden indeholder da: MELLEMRUM MELLEMRUM + MELLEMRUM - Kunne det tænkes nogle af de mellemrum evt er tabs eller andet?
13. oktober 2005 - 19:24
#11
Hvis du kan få første del til at virke, er det helt fint. + - informationen skal du ikke bruge til noget, så det kan du fint skære væk fra dit udtryk
14. oktober 2005 - 01:20
#12
jakobdo og plx, vil i være søde at svare, så jeg kan give point for den gode hjælp?
14. oktober 2005 - 06:22
#13
Svar!
Vi tilbyder markedets bedste kurser inden for webudvikling