PHP: Text ersetzen, wenn nicht von Link umschlossen

Orbit9

www.Orbit9.de
ID: 20533
L
25 April 2006
164
2
Hi,

ich suche gerade einen Ansatz zur Problemlösung in PHP, komme aber nicht recht weiter. Ich möchte kein fertiges Skript, aber ein paar Ideen. Mein Hintergrund: PHP soweit alles klar, reguläre Ausdrücke kenne ich mich aber noch nicht so aus, also preg_replace und so verstehe ich nur in Ansätzen.

Ich habe eine Seite mit Template-System. Dort wird in seite1.php die Variable $inhalt definiert, später included seite1.php die Datei '../template.php'. In der template.php werden aus der Datenbank verschiedene Linkpartner für diese Unterseite ausgelesen.

Hier beginnt also eine Schleife. Jeder Link hat dabei einen Linktext, sagen wir mal beispielsweise "lecker Affengehirne". Jetzt möchte ich checken, ob in der Variable $inhalt (dies ist HTML-Text) genau diese Wortgruppe vorkommt (das ist noch einfach).

Wenn ja, möchte ich in $inhalt den Text durch einen Link ersetzen, also aus "ist man gerne lecker Affengehirne und zwar warm" wird dann "ist man gerne lecker <HREF=...bla>lecker Affengehirne</a> und zwar warm". Auch das ist noch klar.

Ich möchte aber sicherstellen, dass dieser Text derzeit noch nicht von einem anderen Link umschlossen wird, um Doppel-hrefs zu vermeiden. Mein Ansatz ist, dass ich im Prinzip den Text durchparsen müsste, ob es offene hrefs gibt, aber so richtig komme ich da nicht weiter. Vielleicht habt ihr ja eine zündende Idee.

Hier endet dann die Schleife und der nächste Datensatz aus der Datenbank wird ausgewert.

Ich freue mcih auf Euren Input.
 
Frage am Rande, wieso eine schleife wenn es wirklich nur darum geht genauen Text zu finden und ersetzen nutze ich str_replace(array(),array(), $string) und in die array´s kommen dann das welches mit was ersetzt werden soll *komischer Satz*. Jedenfalls wenn er nix findet wird nix ersetzt und es ist zudem noch schneller. Wenn man allerding zweimal den die gleichen Texte hat mit unterschiedlichen links ist das nicht sinnvoll. Vielleicht habe ich Dich auch nur falsch verstanden.

Gruß strolch