Thread Mehrere verschachtelte Begriffe in einem String verändern
(8 answers)
Opened by Gast at 2008-12-05 09:42 Gast+2008-12-05 16:34:00-- Ich würde ja mal die Anforderungen an das Resultat überdenken: Es ist in HTML bzw. generell in SGML zwar möglich, Tags zu schachteln, aber nicht überlappende Tags zu erzeugen. Wenn man in "hereingefallen" also sowohl "fall" als auch "alle" markieren möchte, dann kann man das unmöglich so tun, dass beide markierten Strings jeweils der Inhalt eines eigenen Tags sind. Man könnte hingegen sinnvoll so markieren, dass bei "hereingefallen" mit Suchbegriffen "fall" und "alle" im Endeffekt "hereinge<b>falle</b>n" herauskommt, die Markierungen also quasi verschmolzen werden. Um das zu realisieren, würde ich nicht direkt mit dem Substitutionsoperator arbeiten sondern mit dem Matchoperator die Positionsintervalle aller Treffer für die Suchbegriffe bestimmen (Stichworte pos, @-, @+), diese Intervalle falls sie überlappen oder aneinander angrenzen vereinigen und schließlich um den Text in jedem Intervall herum mittels substr die Markierungstags einsetzen. When C++ is your hammer, every problem looks like your thumb.
|