Jakob: Reguläre Ausdrücke: Nur außerhalb von HTML-Tags ersetzen

Beitrag lesen

Hallo,

Ich habe ein Problem mit den regulären Ausdrücken.
Und zwar will ich innerhalb einer (dynamisch generierten) HTML-Seite bestimmte Worte automatisch verlinken lassen.
Dass ist ja mit regulären Ausdrücken kein Problem, dachte ich zumindest.

Mit preg_replace klappt das alles wunderbar, allerdings nur so lange sich die zu ersetzenden Worte nicht bereits innerhalb eines Links befinden. Denn dann erhalte ich plötzlich einen verschachtelten Link, und somit funktioniert dieser nicht mehr korrekt.
Noch schlimmer ist es, wenn sich das Wort zum Beispiel in einem alt-Parameter eines Bildes befindet. Dann wird nämlich die Seite komplett verstümmelt.

Nun meine Frage: Wie kann ich preg_replace dazu bringen, dass nur Worte außerdhalb von HTML-Tags ersetzt werden. Um zu veranschaulichen, was ich genau meine hier ein Beispiel:

Es soll das Wort "PHP" verlinkt werden.

Zunächst 3 Teilstrings:
1. <img src="img.jpg" alt="PHP ist toll" />
2. <a href="http://www.php.net">Zur PHP Seite</a>
3. Dies ist ein Test mit PHP usw.

Hier soll in den ersten beiden fällen das Wort PHP nicht ersetzt werden, sondern nur im dritten Fall.

Ich habe mir da schon den Kopf zerbrochen, aber keinen vernünftigen Einfall, auch nicht mit preg_replace_callback.

Kann mir hier jemand einen Denkanstoß geben?

Danke schon im voraus.

Gruß
Jakob