2010-04-07 12 views
18

Sto lavorando a uno di quei progetti in cui ci sono milioni di modi migliori per realizzare ciò di cui ho bisogno ma non ho scelta e devo farlo in questo modo. Eccolo:Ho bisogno di un formato di documento leggibile dall'uomo, ma scarsamente efficace

C'è un modulo Web, quando l'utente lo riempie e preme un invio un file di testo leggibile viene creato utilizzando i dati del modulo. Ecco come si presenta:

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 

mio problema è questo: ho bisogno di analizzare questo file di testo di nuovo nel modulo web in modo tale che l'utente possa modificarlo.

Come posso, in modo infallibile, realizzare questo? Un database non è un'opzione, devo usare questi file di testo.

Le mie domande:

  • C'è un modo infallibile per fare questo utilizzando il formato nell'esempio di cui sopra?
  • Cosa formato leggibile avrebbe funzionato meglio (in altre parole, posso cambiare il formato)
  • mezzi leggibili umani che un programmatore potrebbe non leggere e sapere cosa è cosa.

Questo progetto utilizza PHP.

UPDATE

Con leggibile voglio dire che chiunque potrebbe leggere il testo e non essere sopraffatto da essa, compreso il vostro nonna.

+1

Questo è praticamente ciò che XML è ... leggibile dall'uomo ma può essere facilmente analizzato. Detto questo, XML non è il più bello. Suggerirei di usare XML per il file di dati, quindi collegarmi a un file XSLT per formattarlo per la vista leggibile. –

+2

@DA Da umano leggibile intendo che mia madre potrebbe leggerlo e non essere confuso o sopraffatto. – macinjosh

+0

@macinjosh: Adoro la tua nicchia. Quando avevo 12 anni volevo avviare una società chiamata "The Mac & Josh" :-) – Josh

risposta

21

Ho bisogno di un in chiaro, tuttavia Parse-grado Document Format

Questo è ciò che YAML è stato progettato per essere. Puoi leggere ulteriori informazioni al riguardo sul loro sito o su Wikipedia.

Per citare Wikipedia: sintassi

YAML è stato progettato per essere facilmente mappato ai tipi di dati comuni alla maggior parte dei linguaggi di alto livello: lista, hash, e scalare.La sua familiarità frastagliata contorno e l'aspetto magra rende particolarmente adatto per compiti in cui esseri umani rischiano di visualizzare o modificare i dati strutture, come la configurazione file, lo scarico durante il debug, e intestazioni dei documenti

Il vantaggio su XML è che non usa tag che potrebbero confondere gli utenti. E penso sia più pulito di INI (che è stato anche menzionato) perché usa semplicemente due punti anziché i segni di uguale, il punto e virgola e le virgolette.

Esempio YAML assomiglia:

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, e ci sono almeno due librerie PHP per leggere/scrivere YAML – Josh

+0

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

+0

Ottima risposta per una bella domanda. Non sapevo di YAML. –

0

Devo solo dire che una stringa di INI è abbastanza leggibile:

Pet_Name = "Fred" 

Ma, si può sempre rotolare il proprio formato. Qualcosa di simile:

Key: ValueValueValueValueValueValue 
Key: ValueValue 

In sostanza, si sarebbe esplodere la stringa da nuove righe, cercare stringhe di testo Infront di due punti e l'uso che come la chiave, ed i dati dopo i due punti e prima della nuova linea è il valore.

+0

Questo è quello che sto facendo ora, ma mi sono imbattuto in alcuni problemi di analisi in cui i dati includevano testo che incasinava la convenzione come una nuova riga seguita da una parola e due punti. Non abbastanza infallibile. – macinjosh

1

XML è un'opzione.

+4

Non era leggibile da umani uno dei requisiti? –

5

Si potrebbe voler guardare in YAML

http://www.yaml.org/

Sono d'accordo con la risposta Pablo Fernandez. Penso che anche JSON potrebbe essere una buona scelta.

11

direi usare sia

o semplicemente su qualsiasi lightweight markup language che ritiene più appropriato.

+0

Direi che i linguaggi di markup leggeri menzionati, diversi da ini e yaml non sono rilevanti per il post originale poiché sono orientati verso il testo strutturato rispetto ai dati strutturati. –

Problemi correlati