I have a raw data into a .txt file which i want to use to build a character stats out of it. Now sure if it will parse well below but i have into a textarea on my website (will leave a link below) where it is structured better than what it looks like here. Any ideas how can i put it to use with PHP? I want to use this data on a “character calculator” where people will choose a level and i want to dispaly the HP, Def, Str, Dex and all the other stats based on the level chosen. They are on the same row as the level so i was thinking either to read the level and see what’s on the row next or maybe a whole different approach. I am open to ideas
https://www.diablo-2.net/articles/mercenaries#act-1-rogues
Lvl HP Def Str Dex AR MinD MaxD Res 1 40 10 32 41 205 1 2 0 2 40 17 33 43 215 1 2 0 3 45 26 35 45 235 1 3 0 4 54 34 36 47 257 1 3 2 5 63 43 37 49 279 1 3 4 6 72 51 38 51 301 1 3 6 7 81 60 40 53 323 2 4 8 8 90 68 41 55 345 2 4 10 9 99 77 42 57 367 2 4 12 10 108 85 43 59 389 2 4 14 11 117 94 45 61 411 3 5 16 12 126 102 46 63 433 3 5 18 13 135 111 47 65 455 3 5 20 14 144 119 48 67 477 3 5 22 15 153 128 50 69 499 4 6 24 16 162 136 51 71 521 4 6 26 17 171 145 52 73 543 4 6 28 18 180 153 53 75 565 4 6 30 19 189 162 55 77 587 5 7 32 20 198 170 56 79 609 5 7 34 21 207 179 57 81 631 5 7 36 22 216 187 58 83 653 5 7 38 23 225 196 60 85 675 6 8 40 24 234 204 61 87 697 6 8 42 25 243 213 62 89 719 6 8 44 26 252 221 63 91 741 6 8 46 27 261 230 65 93 763 7 9 48 28 270 238 66 95 785 7 9 50 29 279 247 67 97 807 7 9 52 30 288 255 68 99 829 7 9 54 31 297 264 70 101 851 8 10 56 32 306 272 71 103 873 8 10 58 33 315 281 72 105 895 8 10 60 34 324 289 73 107 917 8 10 62 35 333 298 75 109 939 9 11 64 36 342 306 77 111 961 9 11 66 37 360 322 78 113 995 9 11 67 38 378 337 79 115 1029 10 12 69 39 396 353 80 117 1063 10 12 71 40 414 368 82 119 1097 11 13 73 41 432 384 83 121 1131 11 13 74 42 450 399 84 123 1165 12 14 76 43 468 415 85 125 1199 12 14 78 44 486 430 87 127 1233 13 15 80 45 504 446 88 129 1267 13 15 81 46 522 461 89 131 1301 14 16 83 47 540 477 90 133 1335 14 16 85 48 558 492 92 135 1369 15 17 87 49 576 508 93 137 1403 15 17 88 50 594 523 94 139 1437 16 18 90 51 612 539 95 141 1471 16 18 92 52 630 554 97 143 1505 17 19 94 53 648 570 98 145 1539 17 19 95 54 666 585 99 147 1573 18 20 97 55 684 601 100 149 1607 18 20 99 56 702 616 102 151 1641 19 21 101 57 720 632 103 153 1675 19 21 102 58 738 647 104 155 1709 20 22 104 59 756 663 105 157 1743 20 22 106 60 774 678 107 159 1777 21 23 108 61 792 694 108 161 1811 21 23 109 62 810 709 109 163 1845 22 24 111 63 828 725 110 165 1879 22 24 113 64 846 740 112 167 1913 23 25 115 65 864 756 113 169 1947 23 25 116 66 882 771 114 171 1981 24 26 118 67 900 787 116 173 2015 25 27 121 68 930 809 117 175 2061 25 27 122 69 960 832 118 177 2107 26 28 123 70 990 854 119 179 2153 27 29 124 71 1020 877 121 181 2199 28 30 126 72 1050 899 122 183 2245 28 30 127 73 1080 922 123 185 2291 29 31 128 74 1110 944 124 187 2337 30 32 129 75 1140 967 126 189 2383 31 33 131 76 1170 989 127 191 2429 31 33 132 77 1200 1012 128 193 2475 32 34 133 78 1230 1034 129 195 2521 33 35 134 79 1260 1057 131 197 2567 34 36 136 80 1290 1079 132 199 2613 34 36 137 81 1320 1102 133 201 2659 35 37 138 82 1350 1124 134 203 2705 36 38 139 83 1380 1147 136 205 2751 37 39 141 84 1410 1169 137 207 2797 37 39 142 85 1440 1192 138 209 2843 38 40 143 86 1470 1214 139 211 2889 39 41 144 87 1500 1237 141 213 2935 40 42 146 88 1530 1259 142 215 2981 40 42 147 89 1560 1282 143 217 3027 41 43 148 90 1590 1304 144 219 3073 42 44 149 91 1620 1327 146 221 3119 43 45 151 92 1650 1349 147 223 3165 43 45 152 93 1680 1372 148 225 3211 44 46 153 94 1710 1394 149 227 3257 45 47 154 95 1740 1417 151 229 3303 46 48 155 96 1770 1439 152 231 3349 46 48 157 97 1800 1462 153 233 3395 47 49 158 98 1830 1484 154 235 3441 48 50 159 Lvl HP Def Str Dex AR MinD MaxD Res
Edit: I checked the suggested idea by E. Safa Tok and I did some tests using this:
$level = 98; echo "<table style='width: 360px; border-collapse: collapse; border: 1px solid black;'>"; echo "<tbody>"; foreach ($line as $key=>$value) { echo "<tr>"; echo "<td>" . $key . "</td>"; echo "<td>" . $result[$level][$key] . "</td>"; echo "</tr>"; } echo "</table>";
It works!!!! Thanks a lot.
Advertisement
Answer
I wrote a piece of code to split your input to array. After that process, also you can generate JSON formatted array with json_decode function.
<?php $input = <<<EOT Lvl HP Def Str Dex AR MinD MaxD Res 1 40 10 32 41 205 1 2 0 2 40 17 33 43 215 1 2 0 3 45 26 35 45 235 1 3 0 4 54 34 36 47 257 1 3 2 5 63 43 37 49 279 1 3 4 6 72 51 38 51 301 1 3 6 7 81 60 40 53 323 2 4 8 8 90 68 41 55 345 2 4 10 9 99 77 42 57 367 2 4 12 10 108 85 43 59 389 2 4 14 11 117 94 45 61 411 3 5 16 12 126 102 46 63 433 3 5 18 13 135 111 47 65 455 3 5 20 14 144 119 48 67 477 3 5 22 15 153 128 50 69 499 4 6 24 16 162 136 51 71 521 4 6 26 17 171 145 52 73 543 4 6 28 18 180 153 53 75 565 4 6 30 19 189 162 55 77 587 5 7 32 20 198 170 56 79 609 5 7 34 21 207 179 57 81 631 5 7 36 22 216 187 58 83 653 5 7 38 23 225 196 60 85 675 6 8 40 24 234 204 61 87 697 6 8 42 25 243 213 62 89 719 6 8 44 26 252 221 63 91 741 6 8 46 27 261 230 65 93 763 7 9 48 28 270 238 66 95 785 7 9 50 29 279 247 67 97 807 7 9 52 30 288 255 68 99 829 7 9 54 31 297 264 70 101 851 8 10 56 32 306 272 71 103 873 8 10 58 33 315 281 72 105 895 8 10 60 34 324 289 73 107 917 8 10 62 35 333 298 75 109 939 9 11 64 36 342 306 77 111 961 9 11 66 37 360 322 78 113 995 9 11 67 38 378 337 79 115 1029 10 12 69 39 396 353 80 117 1063 10 12 71 40 414 368 82 119 1097 11 13 73 41 432 384 83 121 1131 11 13 74 42 450 399 84 123 1165 12 14 76 43 468 415 85 125 1199 12 14 78 44 486 430 87 127 1233 13 15 80 45 504 446 88 129 1267 13 15 81 46 522 461 89 131 1301 14 16 83 47 540 477 90 133 1335 14 16 85 48 558 492 92 135 1369 15 17 87 49 576 508 93 137 1403 15 17 88 50 594 523 94 139 1437 16 18 90 51 612 539 95 141 1471 16 18 92 52 630 554 97 143 1505 17 19 94 53 648 570 98 145 1539 17 19 95 54 666 585 99 147 1573 18 20 97 55 684 601 100 149 1607 18 20 99 56 702 616 102 151 1641 19 21 101 57 720 632 103 153 1675 19 21 102 58 738 647 104 155 1709 20 22 104 59 756 663 105 157 1743 20 22 106 60 774 678 107 159 1777 21 23 108 61 792 694 108 161 1811 21 23 109 62 810 709 109 163 1845 22 24 111 63 828 725 110 165 1879 22 24 113 64 846 740 112 167 1913 23 25 115 65 864 756 113 169 1947 23 25 116 66 882 771 114 171 1981 24 26 118 67 900 787 116 173 2015 25 27 121 68 930 809 117 175 2061 25 27 122 69 960 832 118 177 2107 26 28 123 70 990 854 119 179 2153 27 29 124 71 1020 877 121 181 2199 28 30 126 72 1050 899 122 183 2245 28 30 127 73 1080 922 123 185 2291 29 31 128 74 1110 944 124 187 2337 30 32 129 75 1140 967 126 189 2383 31 33 131 76 1170 989 127 191 2429 31 33 132 77 1200 1012 128 193 2475 32 34 133 78 1230 1034 129 195 2521 33 35 134 79 1260 1057 131 197 2567 34 36 136 80 1290 1079 132 199 2613 34 36 137 81 1320 1102 133 201 2659 35 37 138 82 1350 1124 134 203 2705 36 38 139 83 1380 1147 136 205 2751 37 39 141 84 1410 1169 137 207 2797 37 39 142 85 1440 1192 138 209 2843 38 40 143 86 1470 1214 139 211 2889 39 41 144 87 1500 1237 141 213 2935 40 42 146 88 1530 1259 142 215 2981 40 42 147 89 1560 1282 143 217 3027 41 43 148 90 1590 1304 144 219 3073 42 44 149 91 1620 1327 146 221 3119 43 45 151 92 1650 1349 147 223 3165 43 45 152 93 1680 1372 148 225 3211 44 46 153 94 1710 1394 149 227 3257 45 47 154 95 1740 1417 151 229 3303 46 48 155 96 1770 1439 152 231 3349 46 48 157 97 1800 1462 153 233 3395 47 49 158 98 1830 1484 154 235 3441 48 50 159 Lvl HP Def Str Dex AR MinD MaxD Res EOT; // Split to lines $lines = explode("n", $input); $result = array(); // for each line foreach ($lines as $line) { // parse with space char $parsed_line = explode(" ", $line); $index = 0; foreach ($parsed_line as $i) { if($i == " " or strlen($i)==0){ array_splice($parsed_line, $index, 1); // if item popped, reduce index $index -= 1; } $index += 1; } // create array of line to add result array. $line = array( "Lvl" => $parsed_line[0], "HP" => $parsed_line[1], "Def" => $parsed_line[2], "Str" => $parsed_line[3], "Dex" => $parsed_line[4], "AR" => $parsed_line[5], "MinD" => $parsed_line[6], "MaxD" => $parsed_line[7], "Res" => $parsed_line[8], ); array_push($result, $line); } // can view whole array with: //var_dump($result); // Example of usage of item selection method 9 -> Lvl. Def -> parameter. echo $result[9]['Def']; ?>