suit: Mit eregi_replace href erweitern

Beitrag lesen

Hallo,

Ich möchte mit eregi_replace einen Link erweitern, also href um "http://xxx/yyy.php?link=" erweitern aber nicht das href von link-Tag sondern nur vom a-Tag!
z.B.:

Blabla <a href="http://www.bla.x">Got to</a> <link href="bla.css">

soll zu

Blabla <a href="http://xxx/yyy.php?link=http://www.bla.x">Got to</a> <link href="bla.css">

Hoffe ich habe mein Problem genug beschrieben.

vorweg: bitte RFC 2606 abschnitt 3 ("Reserved Example Second Level Domain Names") lesen

ich rate jetzt mal ins blaue rein (mal abesehen davon, dass ein <link />-element niemals nach einem <a />-element stehen darf):

du willst sämtliche, in deiner ausgabe befindlichen externen links finden und entsprechend ersetzen um sie über ein (tracking-?)script laufen zu lassen oder um sie in einem schaufenster frame zu öffnen - was auch immer

zitat 1418 - vermutlich kommst du mit einer einfachen suchen/ersetzen-funktion aus, sofern du ordentlichen code hast

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

"alles mit http:// davor" hört sich einfach an, ist aber ein nicht zu triviales thema

du willst zb nicht das src-attribut von grafiken oder stylesheets verändern - usw
was ist mit anderen protokollen? ftp:// http:// gopher:// usw?
was ist mit links der eigenen domain? relativen urls?

schreibe einfach mal alles zusammen und beginne daras dann ein schema zu formen

die alternative ist wie gesagt

suche http:// ersetze durch /out.php?link=http:// - das erfüllt deine ursprüngliche anforderung, codiert den link aber nicht kontextspezifisch (ist also prinzipiell schon zum scheitern verurteilt) und benötigt KEINEN regulären ausdruck