Hi, ich fürchte ich habe da eine etwas schwierigere (?) Frage an die Experten hier zu Thema preg_replace. Ich habe schon einige Sachen in PHP gecoded und dabei auch mit regex gearbeitet, aber diesmal scheint es meinen aktuellen Horizont zu übersteigen....
Ziel:
- Ersetze „test“ (immer ohne Anführungszeichen) mit „<span class=”class1”>test</span>“, wobei “test” im Ergebnis eine back reference sein soll und das Ersetzen nicht case-sensitiv sein soll
- Wenn "test" als alleine stehendes Wort vorhanden ist, also am Anfang des Texts, am Anfang einer Zeile oder nach einem Leerzeichen / gleiches gilt auch für das Ende
UND
- “test” nicht zwischen “[“ und “:0a1b2c3d]” steht, wobei “0a1b2c3d” eine beliebige 8 Zahlen/Buchstabenkombination sein kann
UND
- “test” nicht innerhalb von “[url=http://www.test.com:0a1b2c3d]text[/url:0a1b2c3d]” steht, wobei für “0a1b2c3d” gleiches gilt wie oben und “http://www.test.com” eine beliebige Kombination aus Zahlen/Buchstaben/Sonderzeichen sein kann (eine Validierung auf eine gültige URL ist nicht erforderlich)
Ich habe bereits einige Beispiele und Tutorials angeschaut, konnte aber trotzdem keine komplette Lösung finden…
So viel konnte ich bereits herausfinden:
- “/i” am Ende des Search-Ausdrucks stellt sicher, dass die Suche nicht case-sensitiv ist
- Back-reference erfolgt über “(test)” im Search-Ausdruck und die Nutzung “\1” als Refenrez im Ergebnis
- Alleine stehendes Wort - “\b” im Search-Ausdruck
Ich hoffe es gibt hier im Forum einen passenden Experten ;-) Danke bereits im voraus!
Viele Grüße
th23