2010-04-07 6 views
18

Je travaille sur un de ces projets où il y a un million de meilleures façons d'accomplir ce dont j'ai besoin, mais je n'ai pas le choix et je dois le faire de cette façon. Le voici:J'ai besoin d'un format de document humain lisible et assimilable

Il existe un formulaire Web, lorsque l'utilisateur le remplit et tape un fichier texte lisible par un humain est créé en utilisant les données du formulaire. Il ressemble à ceci:

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 

Mon problème est le suivant: J'ai besoin pour analyser ce fichier texte nouveau dans le formulaire Web afin que l'utilisateur peut le modifier.

Comment pourrais-je, d'une manière infaillible, accomplir ceci? Une base de données n'est pas une option, je dois utiliser ces fichiers texte.

Mes questions:

  • Est-il un moyen infaillible pour faire en utilisant le format dans l'exemple ci-dessus?
  • Quel format lisible fonctionnerait mieux (en d'autres termes, je peux changer le format)
  • Lisible par un humain signifie qu'un non-programmeur pourrait le lire et savoir quoi.

Ce projet utilise PHP.

MISE À JOUR

Par lisible par l'homme, je veux dire que l'on puisse lire le texte et ne pas être submergé par elle, y compris votre grand-mère.

+1

C'est à peu près ce que XML est ... lisible par l'homme mais peut être facilement analysé. Cela dit, XML brut n'est pas le plus joli. Je suggère d'utiliser XML pour le fichier de données, puis un lien vers un fichier XSLT pour le formater pour la vue lisible par l'homme. –

+2

@DA Par humain lisible, je veux dire que ma mère pouvait le lire et ne pas être confus ou débordé. – macinjosh

+0

@macinjosh: J'aime votre nic. Quand j'avais 12 ans, je voulais créer une entreprise appelée "The Mac & Josh" :-) – Josh

Répondre

21

I Need a Human Readable, pourtant Parse-able Document Format

C'est ce que YAML a été conçu pour être. Vous pouvez en savoir plus à ce sujet sur leur site ou sur Wikipedia.

Pour citer Wikipedia: syntaxe

YAML a été conçu pour être facilement mis en correspondance types de données communes à la plupart des langages de haut niveau: liste, hachage, et scalaire.Son contour familier dentelée et l'apparence maigre rend particulièrement adapté pour les tâches où les humains sont susceptibles d'afficher ou de modifier les données structures, telles que les fichiers de configuration , dumping pendant le débogage et têtes de document

L'avantage sur XML, c'est qu'il n'utilise pas de tags qui pourraient perturber les utilisateurs. Et je pense que c'est plus propre que INI (qui a également été mentionné) parce qu'il utilise simplement des deux-points au lieu de signes égaux, de points-virgules et de guillemets.

YAML Sample ressemble:

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, et il y a au moins deux bibliothèques PHP pour lire/écrire YAML – Josh

+0

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

+0

Grande réponse pour une bonne question. Je ne savais pas à propos de YAML. –

0

Je vais juste dire qu'une chaîne INI est assez lisible:

Pet_Name = "Fred" 

Mais, vous pouvez toujours rouler votre propre format. Quelque chose comme:

Key: ValueValueValueValueValueValue 
Key: ValueValue 

Fondamentalement, vous exploserait la chaîne par sauts de ligne, rechercher des chaînes de texte de Infront et l'utiliser côlons comme la clé, et les données après les deux points et avant le saut de ligne est la valeur.

+0

C'est ce que je fais maintenant, mais j'ai rencontré des problèmes d'analyse où les données incluaient du texte qui dérangeait la convention comme une nouvelle ligne suivie d'un mot et d'un deux-points. Pas assez infaillible. – macinjosh

1

XML est une option.

+4

L'une des exigences n'était-elle pas lisible par l'homme? –

5

Vous pouvez regarder dans YAML

http://www.yaml.org/

Je suis d'accord avec la réponse Pablo Fernandez. Je pense que JSON pourrait aussi être un bon choix.

11

Je dirais que vous pouvez soit utiliser

ou à peu près tout lightweight markup language que vous jugez approprié.

+0

Je dirais que les langages de balisage légers mentionnés, autres que ini et yaml, ne sont pas pertinents pour le message original car ils sont orientés vers le texte structuré par rapport aux données structurées. –

Questions connexes