Hello,
Ich hätte noch eine Verständnisfrage dazu. (damit man noch was lernt :-) )
Nur noch mal der Vollständigkeit halber die Lösung:
$site = preg_replace('#<a[^<>]*?href="http://[^<>]*?>(.*?)</a>#is', '$1', $site);Wenn man von solch einem ganz normalen Link ausgeht:
<a href="http://www.test.html">Hier entlang</a>Was genau bedeutet [^<>] im Suchmuster nach <a ?
' Nicht interpretierender Stringbegrenzer für PHP
# Patternbegrenzer für die Reg Ex Engine, relativ frei wählbar
er sollte aber im Pattern selber nicht vorkommen
<a Diese Zeichen sollen vorkommen
[^<>]*? darauf folgen Zeichen einer Zeichenklasse, die sich beliebig oft (*)
wiederholen und 'gefräßig' gemacht wurden, also alles einsammeln,
wenn das Pattern sonst nicht erfüllt werden kann (?).
In der Zeichenklasse sind alle Zeichen vorhanden _außer_ (^) < >.
href="http:// Diese Zeichen müssen folgen
[^<>]*? es folgen wieder die Zeichen einer Zeichenklasse s.o.
Dieses Zeichen soll folgen
(.*?) nun folgt eine Suchgruppe (-> Backreferenz).
in der gesuchten (unbekannten) Zeichenfolge dürfen alle Zeichen enthalten
sein, beliebig oft und 'gefräßig'
</a> diese Zeichen müssen folgen
# Ende des Patterns
i Die Suche soll Case-Insenitive durchgeführt werden
s der Punkt (.) als "ein beliebiges Zeichen" schließt auch Whitespaces, also
auch Zeilenumbrüche mit ein.
' Ende des PHP-Strings
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg