RegEx Probleme :/

gordi

Grünschnabel
Hi Leute, vorneweg danke für jede Hilfe
ich habe folgenden String->

$this_message ='<p>
Text <a href="http://olaf-bosch.de/">http://olaf-bosch.de</a> Text
bla <a href="http://www.akitafreund.de/">www.akitafreund.de</a> bla
fasel <a href="http://ohorn.info/">Ohorn</a> fasel
hier <a href="http://gordex.de/">Gordex</a> bla
</p>
';

mit $a = preg_replace("!<a[^>]*(http|www|mailto)(.*)</a>!siU", "DU NICH", $this_message);

komme ich zu-> Text DU NICH Text bla DU NICH bla fasel DU NICH fasel hier DU NICH bla

wenn ich aber alle <a href-tags> ausser denen wo ohorn und gordex vorkommt ersetzen will komme ich einfach auf keine lösung ://
zB klappt folgendes nicht:

$c = "ohorn|gordex";
$b = preg_replace("!<a[^>]*(http|www|mailto)(^$c)</a>!siU", "DU NICH", $this_message);

weiß jemand Rat?
Vielen Dank
 
Wenn überhaupt, dann müsstest du das Zirkumflex vor eine Gruppe setzen, welche die Wörter enthält.
Code:
# so sieht es bisher bei dir aus
!<a[^>]*(http|www|mailto)(^ohorn|gordex)</a>!siU

# so sollte es aussehen
!<a[^>]*(http|www|mailto)(^(ohorn|gordex))</a>!siU
Allerdings habe ich damit auch immer meine Probleme, weshalb ich dir jetzt nicht genau sagen kann, ob dass nun so funktioniert, wie der Compiler in meinem Kopf.
 
hio nach nebenan, bin auch dresdner ^^
dein vorschlag funktioniert leider nicht :/ noch andere ideen?
 
Mh, vielleicht geht das:
Code:
/<a[^>]*(http|www|mailto)(?!(ohorn|gordex))<\/a>/siU

PS: Aus welcher Gegend von Dresden kommst du direkt?
 
Zurück