anpera.net https://anpera.dyndns.org/phpbb3/ |
|
fscanf / sscanf https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=4939 |
Seite 1 von 1 |
Autor: | MySql [ Mo 29 Jun, 2009 08:56 ] |
Betreff des Beitrags: | fscanf / sscanf |
Hallo, für mein Game, habe ich mir überlegt, die Waffen und Rüstungen von der Datenbank in eine Textdatei auszulagern. Das ist natürlich kein Problem und habe es auch schon hinbekommen. Allerdings, stört mich eine kleine Sache. Undzwar: Im Standart LotGD gibt es Waffen, die mehrere Wörter beinhalten. z.B: (Auszug aus der weapons.req) $this->bbcode_second_pass_code('', ' 19 1 4 990 Kleiner Ast 20 1 5 1575 Großer Ast 21 1 6 2250 Dick gepolsterter Kampfstab 22 1 7 2790 Duenn gepolsterter Kampfstab 23 1 8 3420 Hölzerne Fassdaube 24 1 9 4230 Hölzernes Übungsschwert 25 1 10 5040 Stumpfes Bronzekurzschwert 26 1 11 5850 Gut verarbeitetes Bronzekurzschwert 27 1 12 6840 Rostiges Stahlkurzschwert 28 1 13 8010 Stumpfes Stahlkurzschwert 29 1 14 9000 Scharfes Stahlkurzschwert 30 1 15 10350 Stahlkurzschwert eines Knappen') Diese habe ich dann mit fscanf ausgelesen und so weiter und sofort. Allerdings, stört mich die Sache, das man für jedes neue Wort ein neues %s braucht. $this->bbcode_second_pass_code('', 'fscanf($data, '%u %u %u %u %s %s %s %s')):') $this->bbcode_second_pass_code('', '%u > Id %u > Level %u > Damage %u > Preis %s > Name %s > Name %s > Name %s > Name') Gibt es eine möglichkeit, nur ein %s zu benutzen? Habe schon eine andere Schreibweise versucht, allerdings klappt das auch nicht. Und ich finde es irgendwie unschicklich das so zu schreiben.. ![]() Lg, My. |
Autor: | Auric [ Mo 29 Jun, 2009 09:06 ] |
Betreff des Beitrags: | Re: fscanf / sscanf |
Warum so kompliziert? Du könntest auch ganz einfach auf das bewährte System "Comma Separated Values" (CSV) zurück greifen und deine Einträge mit Kommata Trennen. Anführungszeichen währen auch eine Idee. Das ganze hätte auch den Vorteil, das du diese Listen dann beispielsweise mit Tabellenkalkulationsprogrammen bearbeiten (lassen) kannst. MySQL kann die dann übrigens auch lesen ;-) Auric |
Autor: | Nightborn [ Di 07 Jul, 2009 10:41 ] |
Betreff des Beitrags: | Re: fscanf / sscanf |
Zitat: Die Funktion file() ist identisch mit readfile(), außer dass die eingelesene Datei als Array zurückgegeben wird. Jedes Feld des Arrays korrespondiert mit einer Zeile der Datei. Und dann wie Auric sagt: CSV ... Leerzeichen geht bei Dir nicht ![]() $zeileninhalt=explode(";",$zeile); <... und schon hast alle Felder sortiert. Jetzt nimmst noch ne erste Zeile für die Feldnamen... und voila... |
Autor: | Eliwood [ Di 07 Jul, 2009 12:02 ] |
Betreff des Beitrags: | Re: fscanf / sscanf |
Doch, Leerzeichen geht in diesem besonderen Fall auch, solange der Waffennamen am Schluss bleibt. explode() akzeptiert hier einen dritten Parameter "int $limit", mit dem man hier in 5 Teile ($limit = 5) splitten könnte. Der 5te Teil beinhaltet dann den ganzen Rest, das noch nicht getrennt wurde. |
Autor: | MySql [ Sa 11 Jul, 2009 05:38 ] |
Betreff des Beitrags: | Re: fscanf / sscanf |
$this->bbcode_second_pass_code('', 'Strtr(DATA, SEARCH, REPLACE);') Tut es dann auch :> |
Autor: | Auric [ So 12 Jul, 2009 14:53 ] |
Betreff des Beitrags: | Re: fscanf / sscanf |
StrTr ist aber doch nicht für das Parsen von Strings, sondern für deren Erstellung/Formatierung gedacht, oder bin ich jetzt falsch verbunden? |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |