Liebe Mitdenker, liebe Wissende, liebe Neugierige,
@@dedlfix
Ich möchte aus einem String etwas herausschneiden, was zwischen zwei bestimmten Marken steht. [...] Ich habe es mit explode realisiert. Gibt es vieleicht etwas einfacheres, das zu bewerkstelligen?
Ein regulärer Ausdruck.
Wirklich?
und das bitte ungreedy (nicht gierig).
<b>foo <b>bar</b> baz</b>
Du möchtest
<b>foo <b>bar
extrahieren?Das setzt voraus (genauso wie Stringfunktionen), dass die beiden Sequenzen immer genau so notiert sind und nicht von den vielfältigen Möglichkeiten HTMLs Gebrauch machen.
Erstmal gefragt: ist diese Schachtelung zulässig?
Sinnvoll ist sie ja wohl nicht, es sei denn, dass man mit jedem <b> eine Stufe fetter anzeigen lassen wollte... so wie das bei <bier> ist ;-)
Als zweites gefragt; was würdest Du hier selektieren wollen? den gesamten Bereich zwischen dem ersten <b> und dem letzten </b> (die Attribute lasse ich jetzt extra erst einmal beiseite)?
Ich frag Dich das, weil ich gerade an entsprechenden Methoden/Funktionen sitze, um diese Dinge mit dem DOM-Parser zu behandeln. Meine derzeitige (reduzierte) Array-Darstellung sieht z.B. so aus:
<td><b>2-2<b>-Eins </b>Nööö</b></td>
[1: td] => Array
(
[nodetype] => 1
[nodename] => td
[lineno] => 85
[childcount] => 1
[1: b] => Array
(
[nodetype] => 1
[nodename] => b
[lineno] => 85
[childcount] => 3
[1: #text] => Array
(
[nodetype] => 3
[nodename] => #text
[lineno] => 85
[value] => 2-2
)
[2: b] => Array
(
[nodetype] => 1
[nodename] => b
[lineno] => 85
[childcount] => 1
[1: #text] => Array
(
[nodetype] => 3
[nodename] => #text
[lineno] => 85
[value] => -Eins
)
)
[3: #text] => Array
(
[nodetype] => 3
[nodename] => #text
[lineno] => 85
[value] => Nööö
)
)
)
Da man das Array nur zur bequemen Visualisierung benötigt, musst Du dich bitte nicht über die Bezeichner [1: td] usw wundern. Die machen nur die Ansicht kompakter. Für die Methoden und Funktionen hat man sowieso schon den Objektbaum, den kann ich hier aber noch nicht darstellen. Das ist eines der Ziele!
Ich würde die Sinnhaftigkeit von Anwendungsfällen gerne etwas diskutieren, um eine Marschrichtung für die Funktionen/Methoden zu bekommen. Wonach würden Programmierer suchen in einem HTML-Dokument und was würden sie damit anfangen wollen?
Hier war die Aufgabenstellung: "alles, was zwischen zwei bestimmten Textmarken steht (in einem größeren Text) ausschneiden". Da ist freilich die Aufgabenstellung schon sehr unpräzise, wenn man sie auf HTML anwendet.
Spirituelle Grüße
Euer Robert
robert.r@online.de
Möge der wahre Forumsgeist ewig leben!