pathfinder: Spezielle Textdatei mit PHP auslesen und speichern

Hallo,

habe hier Daten in einer Textdatei (siehe unten), welche etwas merkwürdig mittels Leerzeichen und Punkten strukturiert sind. Würde diese zur Weiterverarbeitung gerne mittels PHP auslesen... aber irgendwie fehlt mir hierzu ein Lösungsansatz, wie man das möglichst Sinnvoll (beispielsweise in ein mehrdimensionales array) bewerkstelligen kann. Schließlich soll das am Ende ja ggf. wieder in dem selben Format als Textdatei gespeichert werden können. Eventuell kennt ja jemand diese Art der Datenspeicherung oder/und hat Idee wie man das mit mögl. wenig Aufwand geschickt ausgelesen und wieder gespeichert bekommt!?

VG

[datensatz]
version
 .minor=2
session
 .id=32
datensatz
 .name=Muster
 .orientierung=1
 .uid=0x1
 .adresse=0x1
 .typ=A
 .icon=list
 .symbol=2
 .xy=8
 .xz=4
 .max=50
 .min=5
 .funktion
 ..nr=0
 ..typ=100
 ..wert=1
 .funktion
 ..nr=1
 ..typ=120
 ..wert=5
 .funktion
 ..nr=2
 ..typ=141
 .funktion
 ..nr=3
 ..typ=142
 .funktion
 ..nr=4
 .funktion
 ..nr=5
 datensatz
 .name=Beispiel
 .uid=0x2005
 .adresse=0x5
 .typ=B
 .sid=0x5
 .icon=block
 .symbol=5
 .xy=6
 .xz=5
 .max=80
 .min=10
 .funktion
 ..nr=0
 ..typ=1
 .funktion
 ..nr=1
 ..typ=40
 .funktion
 ..nr=2
 ..typ=20
 ..wert=1
 .funktion
 ..nr=3
 ..typ=18
 .funktion
 ..nr=4
 .funktion
 ..nr=5
 ..typ=142
 datensatz
 .name=Test
 .orientierung=1
 .uid=0x2006
 .adresse=0x6
 .typ=B
 .sid=0x6
 .icon=tab
 .symbol=3
 .xy=15
 .xz=15
 .max=255
 .min=255
 .funktion
 ..nr=0
 ..typ=1
 .funktion
 ..nr=1
 .funktion
 ..nr=2
 ..typ=200
 .funktion
 ..nr=3
 .funktion
 ..nr=5
 ..typ=18
 ..wert=99
 .funktion
 ..nr=6
 ..typ=48
  1. Lieber pathfinder,

    woher hast Du diese Datei? Sie ähnelt dem .ini-Format. Keine Ahnung, ob Dir da parse_ini_file() helfen kann.

    Liebe Grüße

    Felix Riesterer

    1. Hallo Felix,

      das dachte ich auch zuerst, aber dieses Punkt und Punktpunkt-Format ist doch abweichend. Das ist kein reines INI-Format. Ich habe sowas noch nie gesehen und mein schneller Versuch, etwas über "ini-files with dots" oder "hierarchical ini file" zu finden, führte nicht zum Ziel.

      Es gibt ein hierarchisches Ini-Format, aber da wird vor den Punkten jeweils der Sektionsname wiederholt. PHP kennt das nicht. Und es versteht auch keine Zeilen, die nur einen Sektionsnamen enthalten, ohne Gleichheitszeichen.

      Man muss es wohl selbst bauen. Aber das ist nicht trivial, und es wird durch die PHP-Technik des "copy on write" für Arrays auch nicht einfacher. Spontan herunterschreiben kann ich das nicht, da bräuchte ich sicherlich eine Stunde oder zwei für. Sag ich jetzt. 4 Stunden später bin ich vermutlich am Rande des Nervenzusammenbruchs und frickele den siebzehnten Sonderfall hinein 😉

      pathfinder - hast Du sachdienliche Hinweise auf die Anwendung, die eine Ini-Datei in diesem Format erwartet?

      Rolf

      --
      sumpsi - posui - obstruxi
  2. Moin,

    ist das eventuell eine Baumstruktur, in der die Punkte Zweige darstellen? Mich erinnert das eine mögliche Darstellung von Hierarchien – wenn ich das umformatierte:

    [datensatz]
    version
        minor=2
    session
        id=32
    datensatz
        name=Muster
        orientierung=1
        uid=0x1
        adresse=0x1
        typ=A
        icon=list
        symbol=2
        xy=8
        xz=4
        max=50
        min=5
        funktion
            nr=0
            typ=100
            wert=1
        funktion
            nr=1
            typ=120
            wert=5
    …
    

    Viele Grüße
    Robert