2010-04-07 4 views
18

Ich arbeite an einem dieser Projekte, wo es eine Million bessere Möglichkeiten gibt, um das zu erreichen, was ich brauche, aber ich habe keine Wahl und muss es auf diese Weise tun. Hier ist es:Ich brauche ein lesbares und dennoch parsenähiges Dokumentformat

Es gibt ein Webformular, wenn der Benutzer es ausfüllt und eine Übersendung trifft, wird eine menschenlesbare Textdatei mit den Formulardaten erstellt. Es sieht wie folgt aus:

field_1: value for field one 

field_2: value for field two 
more data for field two (field two has a newline in it!) 

field3: some more data 

Mein Problem ist folgendes: Ich brauche diese Textdatei in das Web-Formular zurück zu analysieren, so dass der Benutzer sie bearbeiten können.

Wie könnte ich dies auf eine absolut sichere Weise erreichen? Eine Datenbank ist keine Option, ich muss diese Textdateien verwenden.

Meine Fragen:

  • Gibt es eine harmlose Weise über diese mit dem Format in dem Beispiel zu tun?
  • Was menschliches lesbares Format würde besser funktionieren (mit anderen Worten, ich kann das Format ändern)
  • Menschenlesbar bedeutet, dass ein Nicht-Programmierer es lesen und wissen was ist was.

Dieses Projekt verwendet PHP.

UPDATE

von Menschen lesbaren meine ich, dass jemand den Text lesen konnte und nicht von ihr überwältigt werden, deine Großmutter einschließlich.

+1

Das ist ziemlich viel, was XML ist ... vom Menschen lesbar, aber kann leicht geparst werden. Das heißt, rohes XML ist nicht das Schönste. Ich würde vorschlagen, XML für die Datendatei zu verwenden und dann eine Verknüpfung zu einer XSLT-Datei herzustellen, um sie für die lesbare Ansicht zu formatieren. –

+2

@DA Mit Menschen lesbar meine ich, dass meine Mutter es lesen konnte und nicht verwirrt oder überfordert war. – macinjosh

+0

@macinjosh: Ich liebe deine NIC. Als ich 12 war, wollte ich eine Firma namens "The Mac & Josh" gründen :-) – Josh

Antwort

21

ich einen Klar benötigen, doch Parse-able Document Format

Dies ist, was YAML wurde entwickelt, um. Sie können mehr darüber auf ihrer Website oder unter Wikipedia lesen.

Wikipedia zitieren:

YAML Syntax entworfen wurde, in den meisten Hochsprachen zu Datentypen leicht abgebildet zu werden: Liste, Hash und Skalar.Sein vertraut gegliederter Umriss und schlankes Aussehen macht es besonders für Aufgaben geeignet, bei denen Menschen sind wahrscheinlich oder bearbeiten Daten Strukturen, wie Konfiguration Dateien anzuzeigen, während der Fehlersuche Dumping und Belegknöpfe

Der Vorteil Über XML bedeutet, dass es keine Tags verwendet, die Benutzer verwirren könnten. Und ich denke, es ist sauberer als INI (was auch erwähnt wurde), weil es einfach Doppelpunkte anstelle von Gleichheitszeichen, Semikolons und Anführungszeichen verwendet.

Probe YAML wie folgt aussieht:

invoice: 34843 
date : 2001-01-23 
bill-to: &id001 
    given : Chris 
    family : Dumars 
    address: 
     lines: | 
      458 Walkman Dr. 
      Suite #292 
     city : Royal Oak 
     state : MI 
     postal : 48046 
ship-to: *id001 
product: 
    - sku   : BL394D 
     quantity : 4 
     description : Basketball 
     price  : 450.00 
    - sku   : BL4438H 
     quantity : 1 
     description : Super Hoop 
     price  : 2392.00 
tax : 251.42 
total: 4443.52 
comments: > 
    Late afternoon is best. 
    Backup contact is Nancy 
    Billsmer @ 338-4338. 
+0

Oh, und es gibt mindestens zwei PHP-Bibliotheken zum Lesen/Schreiben YAML – Josh

+0

http://stackoverflow.com/questions/294355/php-yaml-parsers – Josh

+0

Große Antwort für eine gute Frage. Ich wusste nichts über YAML. –

0

ich gerade bin gonna sagen, dass ein INI-String ziemlich lesbar ist:

Pet_Name = "Fred" 

Aber Sie immer Ihr eigenes Format rollen könnten. Etwas wie:

Key: ValueValueValueValueValueValue 
Key: ValueValue 

Grundsätzlich würden Sie die Zeichenfolge von Zeilenumbrüchen, suchen Sie nach Textstrings infront Doppelpunkte explodieren und verwenden, die als Schlüssel und die Daten nach dem Doppelpunkt und vor dem Newline ist der Wert.

+0

Das ist, was ich jetzt mache, aber ich habe einige Parsing-Probleme, wo die Daten enthalten Text enthalten, die die Konvention wie eine neue Zeile, gefolgt von einem Wort und einem Doppelpunkt versagt. Nicht narrensicher genug. – macinjosh

1

XML eine Option.

+4

War nicht menschlich lesbar eine der Voraussetzungen? –

5

Sie könnten in YAML

aussehen wollen

http://www.yaml.org/

ich mit Pablo Fernandez Antwort zustimmen. Ich denke JSON könnte auch eine gute Wahl sein.

11

Ich würde sagen, entweder verwenden

oder fast jede lightweight markup language Sie für angemessen halten.

+0

Ich würde argumentieren, dass die erwähnten leichten Markup-Sprachen, außer ini und yaml, für den ursprünglichen Beitrag nicht relevant sind, da sie auf strukturierten Text vs. strukturierte Daten ausgerichtet sind. –