Hallo Leutz,
ich habe ein kleines Problem
das folgende Textfile enthält Leerzeilen die ich als Anhaltspunkt benötige ...
diese Leerzeilen sagen mir welche Vorsilbe der folgende String bekommt ...
ich benötige eine Abfrage die mir bei auftauchen einer Leerzeile etwas bestimmtes macht ..
so sieht ein auszug des Textfiles b.z.w. array aus:
Code: In Zwischenablage kopieren (nur IE)
noch zu rerklärung ... der erste String bekommt die vorsilbe '2@" also z.b. '2@Alkoholfreie Getränke'
wenn keine Leerzeile folgt bekommt der nächste string die vorsilbe '3@' folgt nun eine leerzeile und ein string dann bleibt es bei der vorsilbe '3@' --solange bis zwei leerzeilen hintereinander oder 2 Strings hintereinander folgen... bei 2 Leerzeilen hintereinander geht es einen Schritt zurück ...also in diesem Fall wieder '2@' ...folgen 2 strings hintereinander geht es einen zähler hoch . ..'3@'
hier mal eine Ansicht wie das array hinterher aussehen sollte (da nun die vorsilbe steht könnten die Leerzeilen raus :
Code: In Zwischenablage kopieren (nur IE)
hier nun mein versuch :
Code: In Zwischenablage kopieren (nur IE)
Danke im vorraus falls mir jemand weiterhelfen kann.
Antworten
Code: In Zwischenablage kopieren (nur IE)
Hoffentlich habe ich keine Fehler eingebaut, habe das nur mal so aus dem Kopf abgeändert. Zunächsteinmal führts du de Trim gleich beim Einlesen aus. Wenn du bei fgets keine Länge angibst, geht PHP meines Wissens von 1024 Bytes aus.
jetzt wird $i bei jeder Leerzeile um eins erhöht. Was passiert, wenn jemand an der Tastatur eingeschlafen ist und dabei der Kopf auf di Returntaste gefallen ist? Dann hast du ganz viele ungenutzte Nummern. Dafuer habe ich die Variable $neukat eingerichtet, komm jetzt nur nicht mehr dazu, dass noch durchzuziehen.
Ich würde dir empfehlen, die Nummern auf eine Bestimmte Länge zu formatieren, z. B. printf('@%06d@', $i) würde etwas wie @000001@ liefern.
MfG
TenBaseT
2.
hallo TenBaseT
und danke ..es zählt schonmal ...aber wie komme ich bei zwei leerzeilen einen zähler zurück? vielleicht doch den inhalt in ein array packen und etwas mit next() und prev() basteln?
.. ich stehe voll auf dem schlauch ,,, Das mit continue in der schleife kannte ich noch nicht --das ist wahrscheinlich auch sehr wichtig für die lösung dieses Problems
die ziffern bedeuten die Kategorie und Unterkategorie (kein zähler)
2@ Hauptkategorie
3@ Unterkategorie
4@ weiter unterkategorie
2@ Hauptketogorie
die leerzeilen sind mein einzigster anhaltspunkt und sagen mir zu welcher kategorie dieser string gehört.
Code: In Zwischenablage kopieren (nur IE)
so müsste die liste formatiert werden,,,
der zähler muss ständig vor und zurück zählen ,,, und wenn sich leerzeile und string abwechseln dann bleibt es bei der gleichen ziffer wie zuvor ... es wird also nur raufgezählt wenn 2 oder mehr strings aufeinander folgen und wieder herruntergezählt wenn 2 oder mehr leerzeilen aufeinander folgen
bei 2 leerzeilen hintereinander geht es -1 zurück und bei 3 leerzeilen hintereinander geht es -2 zurück
bei 3 strings hintereinander bekommt oder behält der erste string den zähler den er vorher hatte(z.b. 2@) und die anderern beiden jeweils +1 und +2 also z.b. 3@ und 4@
das ist alles ziemlich verwirrend ,,, aber ich hoffe ich komme noch dahinter
danke für deine schnelle bemühung viellicht kannst du mir da weiterhelfen
3.
es war doch einfacher als ich dachte ..gester war es dem anschein nach schon zu spät für mich ...
fall andere eine ähnliche lösung brauchen poste ich sie mal :
Code: In Zwischenablage kopieren (nur IE)