Homepage selbermachen 7.847 Themen, 35.565 Beiträge

PHP Bastelaufgabe: Explode

pco / 5 Antworten / Flachansicht Nickles

Hallo,

ich habe einen teuflischen Plan ;-).

Ich habe eine sehr lange Tabelle in HTML. In dieser Tabelle kommen sporadisch TH-Tags vor. Ich möchte diese Tabelle an diesen Tags auftrennen und eine neue Tabelle daraus machen, um Seitenumbrüche zu ermöglichen.

Einfach: Mit Explode, - doch so leicht ist es nicht.

Denn die TH-Tags sind natürlich unterschiedlich "weit" von einandern entfernt. Manchmal nur eine Zeile.

Ich muss also nachdem ich Explode benutzt habe, die Tabelle u.U. wieder "zusammenkleben". Im Moment mache ich das auch genau so.

Es geht aber noch weiter. Gelegentlich sind diese Mammuttabellen selber nur teil einer Tabelle und durch das Zerlegen wird das Tag der umschliessenden Tabelle nicht geschlossen.

Auch das prüfe ich derzeit recht umständlich ab.

Gibt es einen einfachen Algorithmus für das Problem der Zerlegung mehrfach verschachtelter HTML-Tags in PHP?

Eventuell gar ein Script, welches mir einen Text an einer Beliebigen Stelle zerlegt und daraus zwei korrekte HTML-Texte macht?

bye

PCO

bei Antwort benachrichtigen
Borlander pco „Die Lösung des Problems wäre ein rekursiver Algorithmus. Die sind aber in PHP...“
Optionen
Die Lösung des Problems wäre ein rekursiver Algorithmus.
Warum? Sind doch nur die Daten auf erster Ebene interessant - und für das Zählen der Tabellen-Ebenen braucht es keine Rekursion...

Meine derzeitige Lösung ist das trennen der Kette an jedem "Kleiner-Zeichen".
Das aktuelle Verfahren scheint mir auch zu aufwendig - als Trennstellen kommen ja sowieso ausschließlich TH-Tags in Frage...

Das Problem ist ferner, dass ich die Daten dabei nicht verändern kann / darf.
Da könnte man doch ggf. eine Kopie anlegen ;-)

Was ich für deutlich einfacher halte:

  1. <TH suchen für Anfang
  2. <TR alles dazwischen ist schon mal Header
  3. <TH - alles vor dem davorliegenden <TR> gehört dann mit rein *(!)
  4. von vorne beginnen


* sofern kein <TABLE dazwischen ist:
Falls Ja: Ebenenzähler erhöhen, falls </TABLE reduzieren (falls beide drin muß der schließende natürlich weiter hinten stehen). Jetzt solange weiter nach 3. suchen bis wir auf niedrigster Tabellenebene sind :-)


Gruß
Borlander
bei Antwort benachrichtigen