Ich habe eine Config-Datei, die ein bisschen wie dies Dies ist in einer Datei config.confSplitting eine Datei in entsprechende Abschnitte in PHP
Blah
Diddel
Foo
Bar1
Bar2
One
XXY
Password%1 = something
Password%2 = other
Password%3 = nuffing
Completely different stuff here
RandomS6}=2
User%1 = Henry
User%2 = Marcus
User%3 = SecretAdmin
More stuff
Even more stuff
Loads of stuff
sieht, dass ein User-Uploads über PHP Form. Ich möchte, dass die Datei lesen und erstellen 5 neue Dateien aus ihm wie folgt:
- alle Linien von Anfang an bis einschließlich der Linie XXY
- Alle ‚Passwort% ...‘ Linien
- die Linien zwischen dem letzten 'Passwort ...' und dem ersten 'Benutzer ...' line
- All 'User ...' Linien
- Alles unterhalb der 'User ...' Linien
Nun ist die String-Matching ich umgehen kann, regex würde süß sein, aber da es eine Config mit einem strengen Format ist, kann ich es bodge mit
while (substr($line,0,5) == "Passw" { ...
Was ich nicht meinen Kopf bekommen um die strukturelle Art und Weise . Ich begann mit verschachtelten if-Schleifen, aber dass a) mir irrsinnig ineffizient erscheint (jede Zeile nach dem 'User ...' Block wird immer noch nach 'Passwort ...' getestet) und b) sieht es nicht nur matschig aus ist auch ein Albtraum zu debuggen.
Es muss einen cleveren Weg geben, dies zu tun? Ich stelle mir das vor wie Karten austeilen - "fange an Deck an, ziehe Karten in diesen Stapel, bis 'x' passiert, dann hole Karten in einen anderen Stapel, bis 'y' passiert usw." aber ich bin nicht genug von einem Programmierer, um mich darum zu kümmern.
Ich habe eine Menge Googeln und hier getan - aber ich bekomme Seiten, die mir sagen, wie man in Kommas teilen oder nach Anzahl der Zeilen, aber kein Tutorial semantisch aufteilen, sozusagen?
Vielen Dank für Hinweise!
P.S. - Muss nicht PHP sein, wenn etwas viel besser für diese Rolle geeignet ist. Aber ich bin ein Anfänger bei Ruby und ein Baby bei Python - PHP ist, was ich ein bisschen besser als alles andere weiß.
Der von Ihnen beschriebene "Dealing Cards" -Algorithmus kann in Python einfach mit 'itertools' implementiert werden. * (es ist auch nicht sehr kompliziert mit anderen Sprachen) *. –
itertools bookmarked. Für diese Aufgabe ist die Lernkurve zu steil, aber es sieht so aus, als ob es sich lohnt, etwas Zeit zu investieren. Vielen Dank! – sheepsky