Lexikon mit Wortersetzung

dressing

Grünschnabel
Hallo,

ich habe eine Art Lexikon geschrieben.
D.h. es gibt für verschiedene Begriffe eine Erklärungsseite.

Nun möchte ich die einzelnen Artikel untereinander automatisch verlinken.

Eine einfache Ersetzung "Artikelname" durch "Link auf Artikelname" funktioniert nicht, da es ja sein kann, dass der Name eines Artikels in einem anderen Link vorkommt und man somit einen Link in einem Link hätte.
Ich bräuchte also eine Ersetzung von "Artikelname" durch "Link auf Artikelname", die gleichzeitig prüft ob "Artikelname" nicht innerhalb eines anderen HTML-Tags steht.

<a href="http://tolle-seite.de" title="Informationen über ARTIKELNAME">Link auf tolle-seite.de zum Thema ARTIKELNAME</a>
Hier sollte also ARTIKELNAME nicht ersetzt werden, da er innerhalb von <a></a> und im title vorkommt.

<p>ARTIKELNAME ist toll</p> sollte hingegen ersetzt werden.

Hat jemand einen Lösungsansatz dafür?

Ggf. wäre auch eine Javascript-Lösung sinnvoll, die nach Laden der Seite die Wörter ersetzt, falls es dafür schon eine fertige Lösung gibt.
 
Mit einem regulären Ausdruck der angibt das nach ARTIKELNAME kein </a> kommen darf.

Aber es könnte doch auch ein ganz neuer Link folgen und somit wäre irgendwo nach dem Artikelnamen ja wieder ein </a>.
Und zusätzlich müsste ja geprüft werden, ob sich der Artikelname direkt innerhalb eines tags befindet wie bei dem title="" Beispiel.

Ist eine Hilfestellung bzgl. eines passenden regExp hierfür deinerseits möglich?
Leider habe ich damit bisher nur einfachere Ausdrücke hinbekommen, dieser scheint mir noch etwas zu kompliziert.
 
Ich bin auch nicht der regexperte aber sowas wie
PHP:
$str = preg_replace("/([^(<a.*?>.*?)])ARTIKELNAME(.*?[^(.*?<\/a>)])/", "\\1LINK\\2", $str);
sollte funktionieren...
 
Ich bin auch nicht der regexperte aber sowas wie
PHP:
$str = preg_replace("/([^(<a.*?>.*?)])ARTIKELNAME(.*?[^(.*?<\/a>)])/", "\\1LINK\\2", $str);
sollte funktionieren...

Hallo hasta_jesaja,

der Code funktioniert soweit das Wort im Text vorkommt.
Wenn es aber z.B. im title von <a> vorkommt wird es auch ersetzt.
Es müsste also noch eine Überprüfung rein ob der Artikelname innerhalb von <a und > steht bzw. generell zwischen einem Tag < >, sonst würde ja <p class="ARTIKELNAME">blbla</p> auch ersetzt werden. Nur wie ergänzt man das noch?
Dass innerhalb von <a> und </a> nicht ersetzt wird klappt ja schon mal :)
 
In dem Text ist ja sowohl einfacher Text, als auch Link und sonstige html-tags.

Also bräucht eich einen RegExpt, der den ARTIKELNAMEN nur ersetzt, wenn er nicht zwischen < und > steht und nicht zwischen <a> und </a>. Nur weiss ich nicht wie ich diese beiden Bedingungen in einer Anweisung zusammenführe :(
 
Zurück