Hallo,
ich rate jetzt mal ins blaue rein (mal abesehen davon, dass ein <link />-element niemals nach einem <a />-element stehen darf):
Hab damit gemein,t das nur Links geändert werden sollen.
wenn du reguläre ausdrücke verwendest und mit php arbeitest, verwende immer die funktionen mit dem preg_-präfix, perl-kompatible syntax ist weiter verbreitet, leistungsfähiger (schneller und umfangreicher) und einfacher zu verstehen als posix-kompatible (erg-)
zur umsetzung ein allgemeiner hinweis
du willst NICHT, dass aus http://example.com folgendes wird http://example.org/out.php?link=http://example.com - ich nehme an, du willst eher dieses hier http://example.org/out.php?link=http%3a%2f%2fexample.com
da die url ein parameter für die variable link wird, sollte sie kontextspezifisch codiert werden - url_encode wird dir dabei helfen
zum regulären ausdruck:
überlege genau, was du tun willst - sprich welchem muster können die links entsprechen, die du finden und ersetzen willst
Alle Links auser Links der eigenen Domain
du willst zb nicht das src-attribut von grafiken oder stylesheets verändern - usw
was ist mit anderen protokollen? ftp:// http:// gopher:// usw?
Solche Links sollten auch geändert werden.
was ist mit links der eigenen domain?
Sollten gleich bleiben.
relativen urls?
Solten in "http://example.com/link.php?link=relativeURL" geändert werden.
Zusammenfassent lässt sich sagen: im href-Attribut des a-Tags sollte "http//example.com/link.php?link=" eingefügt werden. Wenn möglich sollte auch url_encode verwendet werden.
MfG
karlX