Efter kørslen af den kode har du så et array i PHP der hedder $guildinfo.
Det er dog ikke nogen særlig SIKKER metode, så hvis andre end dig kan uploade noget, vil jeg fraråde dig at bruge den metode, og i stedet analysere hver enkelt linie - du kan lave en funktion der kalder sig selv hver gang den møder et underarray, så kan du håndtere arrays af en virkårlig dybde. Lige det har jeg dog ikke kode til endnu, men jeg står faktisk overfor at skulle i gang med netop den opgave til min egen WoW-addon - så hvis ingen andre har haft tid/mulighed skulle jeg gerne kunne give dig koden .
Det er en ekstremt hurtig extension, der er bygget til det format, du viser: JSON (JavaScript Object Notation). Faktisk er den så hurtig, at den langt udkonkurer XML som datamedie til postbacks i XMLHttp-requests under AJAX-applikationer.
Personligt kunne jeg aldrig finde på at poste en AJAX forespørgsel tilbage i XML, da det fylder en del (og ofte en hel del) mere end JSON. Samtidig er JSON-formatet 'native' for JavaScript, så data ankommer til klienten i et format, der er direkte - og tudelet - anvendeligt i JavaScript :)
Jeg skal med glæde indrømme at JSON ikke er noget jeg har sat mig ret meget ind i, men ud fra det jeg lige kan finde er Lua-arrays ikke direkte kompatible med JSON, og en syntax-checker jeg fandt lader da også til at bekræfte dette (fejl på den første linie) - er du sikker på du er i det rigtige spørgsmål, Ole?
Hehe ... det så lige så hjemmevandt ud, da jeg først kastede et hurtigt blik på spm'et. Hvis du nu lærer at opdatere, skal jeg gøre et ihærdigt forsøg på at kikke ordentligt efter, inden jeg næste gang kaster mig ud i prosaens lysaligheder ;D
I mellemtiden kan jeg da så lige glæde spørgeren med at jeg skulle mene at have en sikker parser til Lua-arrays: <?PHP function ReadArray(&$file) { $arr=Array(); $str=trim(fgets($file)); while ($str!='}' && $str!='},') { $split=explode(' = ',$str); $split[0]=substr($split[0],2,-2); if ($split[1]=='{') $arr[$split[0]]=ReadArray($file); else $arr[$split[0]]=str_replace('"','',substr($split[1],0,-1)); $str=trim(fgets($file)); } return $arr; }
if (!empty($_FILES['file']['name']) && $_FILES['file']['error']==UPLOAD_ERR_OK) { $trigger='GuildInfo_GuildRoster'; $file=fopen($_FILES['file']['tmp_name'], 'r'); while (!feof($file)) { $str=fgets($file); if (substr($str,0,strlen($trigger))==$trigger) { $guildinfo=ReadArray($file); } } fclose($file); //her bruger du så dit array } ?>
Det vigtige i denne er indholdet af $trigger - når scriptet finder en linie der starter med dette, går den igang med at indlæse array'et i $guildinfo. Alt der ikke fanges i dette vil blive sprunget over.
Vær dog opmærksom på at det kun er sikkert mod angreb indtil du skal have det ind i din SQL-database - sørg for at escape de data du sætter ind.
Eftersom det gerne skulle virke for dig når min fil virker perfekt (og det trods alt også er WoW der har lavet filen der), tillader jeg mig at smide et svar nu - så slipper du for at vente på mig hvis det virker :)
Hvis det nu viser sig det IKKE virker efter planen - så kan du jo så selv bestemme om du vil afvise det med det samme eller vente til vi har fået det til at virke :)
Nu er der snart gået en måned - stadig ikke haft tid?
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.