karlX: Mit eregi_replace href erweitern

Beitrag lesen

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