PHP Regex um a-Tags zu entfernen

  • Ersteller Ersteller Mr. Snoot
  • Erstellt am Erstellt am
M

Mr. Snoot

Gast
Hio,

ich möchte mit preg_replace Links entfernen, so dass nur noch der Linktext stehen bleibt. Allerdings soll das ganze nicht bei solchen Links passieren:
HTML:
<a class="pseinfo" href="javascript:void(0);">Text</a>

Um Links generell zu entfernen hab ich diesen Code:
PHP:
$inhalt = preg_replace('#<a(.*)>(.*)</a>#Uis', '\\2', $inhalt);

Wie mach ich das jetzt, dass das nicht bei obigem Link passiert? Ich hab schon mit [^pseinfo] u.ä. gespielt, aber kA ob das überhaupt so funktioniert und wo genau das dann hin müsste.
 
Stichwort im öffnenden <a> dürfe "negative lookahead" sein.

Syntax:
Ausdruck1(?!Ausdruck2)

Bewirkt:
Ausdruck2 darf nicht auf Ausdruck1 folgen.
 
Aja, das scheint zu klappen:
PHP:
$inhalt = preg_replace('#<a(?! class=\"pseinfo\")(.*)>(.*)</a>#Uis', '\\2', $inhalt);

Eigentlich dachte ich ja, ich müsse dann aber für den Ersetzungsausdruck statt \\2 -> \\3 schreiben, ich hab ja vorne eine Klammer mehr. Das ist aber nicht der Fall.

Ist das normal, dass das nicht referenziert wird?
 
Geh ich von aus. Wird wohl kein Fehlverhalten seitens PHP sein :)
Hab aber auch von PHP keinen Schimmer...
 
Zurück
Oben