Hallo,
ich bastele gerade an einem Script, welches ein Array von Begriffen in einem beliebigen Text automatisch verlinken soll. Allerdings gibt es noch ein kniffeliges Problem zu lösen und ich hoffe auf Eure Hilfe, da ich überhaupt nicht mehr alleine weiterkomme, ich sitze da schon seit Wochen dran :-(
Demo: http://www.christianhart.de/test/glossar.php
kommentierter Source dazu: http://www.christianhart.de/test/glossar.phps
(erscheint dort aber nicht als Source, kann aber heruntergeladen werden)
Das Script soll letztlich folgende Problemstellung bewältigen können:
1. nur Begriffe in Absätzen <p></p> und Listen <li></li> in Betracht ziehen
2. einen dort gefundenen Begriff insgesamt nur 1x verlinken
3. bestimmte Begriffe sollen mittels Flag nur als eigenständiges Wort verlinkt werden, nicht aber mitten in anderen Wörtern
4. kürzere Begriffe, die in längeren Begriffen vorkommen, sollen nicht nochmals verlinkt werden (z.B. SETI in Paläo-SETI o.ä.)
Punkt 1,2,3 funktionieren bereits, allerdings gibt es bei Punkt 4 das Problem, dass eben genau dies passiert. Ich habe dazu im Beispieltext eine Bemerkung hinzugefügt.
Frage: wie muss ich mein Script bzw. die Regular Expression umbauen, damit Punkt 3 funktioniert? Ich habe bereits mit Expressions experimentiert, die versuchen, einen Treffer innerhalb von <a></a> auszuschliessen, aber das war leider nicht von Erfolg gekrönt. Vielleicht kann man sogar das komplexe Aufsplitten der Absätze da mit einbasteln, ich habe im Moment leider keine bessere Lösung als diese gefunden.
Ich wäre echt dankbar, wenn mir da jemand raushelfen könnte :-)
Gruß Christian