Hallo,
ich habe ein Problem beim Umwandeln eines String mit URL-Inhalt in einen Link. Im Prinzip funktioniert alles, nur soll der Link als Parameter an einen anderen URL übergeben werden. Enthält dieser Link jedoch selbst weitere Parameter, werden diese nicht ihm selbst, sondern (logischer Weise) dem aufgerufenen URL zugeordnet. (Ich weiß, klingt jetzt bekloppt, ich bringe gleich ein Beispiel.)
Zuerst einmal der Code, der einen String nach URLs durchsucht und diese in Links umwandelt:
Enthält die Variable $text nun z.B. den URL http://www.blah.de?x=1, geht das wunderbar. Lautet er jedoch http://www.blah.de?x=1&z=2, wird der z-Parameter nicht mehr übergeben, da er natürlich als nächster Parameter dem aufrufenden URL zugeordnet wird.
Folglich müsste ich alle ? und & im URL im Text (jedoch nur in diesem URL umwandeln. Das wäre an der Stelle link=\\0. Ich wollte dort urlencode anwenden, was jedoch nicht funktioniert. (Scheinbar wird urlencode ausgeführt, bevor der entsprechende Abschnitt \0 ausgegeben wird.)
Wenn ich z.B. folgendes versuche:
Erhalte ich als Ausgabe lediglich eine 0 am link-Parameter im URL.
Wie kann ich das nun lösen? Ich zerbreche mir seit Stunden den Kopf, komme aber auf nichts brauchbares. Im Netz habe ich auch nichts sinnvolles gefunden.
Vielen Dank schon mal fürs Lesen,
ADco
ich habe ein Problem beim Umwandeln eines String mit URL-Inhalt in einen Link. Im Prinzip funktioniert alles, nur soll der Link als Parameter an einen anderen URL übergeben werden. Enthält dieser Link jedoch selbst weitere Parameter, werden diese nicht ihm selbst, sondern (logischer Weise) dem aufgerufenen URL zugeordnet. (Ich weiß, klingt jetzt bekloppt, ich bringe gleich ein Beispiel.)
Zuerst einmal der Code, der einen String nach URLs durchsucht und diese in Links umwandelt:
Code:
$text=eregi_replace( "((ht|f)tp://www\.|www\.)([a-z0-9-]+(\.[a-z0-9-]+)* (\.[a-z]{2,3})((/|\?)[a-z0-9~#%\&\\/'_\+=:\?\.-]*)*)", "http://www.\\3", $text ); $text=eregi_replace( "((ht|f)tp://)((([a-z0-9-]+(\.[a-z0-9-]+)* (\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%\&'_\+=:\?\.-]*)*)", "<a class=\"bA\" href=\"http://url.chatter-online.com/?r=http://www.chatter-online.com&link=\\0\" target=\"\_blank\">\\1\\4</a>", $text );
Folglich müsste ich alle ? und & im URL im Text (jedoch nur in diesem URL umwandeln. Das wäre an der Stelle link=\\0. Ich wollte dort urlencode anwenden, was jedoch nicht funktioniert. (Scheinbar wird urlencode ausgeführt, bevor der entsprechende Abschnitt \0 ausgegeben wird.)
Wenn ich z.B. folgendes versuche:
Code:
... online.com&link=".urlencode(\0)."\" target=\"\_blank ...
Wie kann ich das nun lösen? Ich zerbreche mir seit Stunden den Kopf, komme aber auf nichts brauchbares. Im Netz habe ich auch nichts sinnvolles gefunden.
Vielen Dank schon mal fürs Lesen,
ADco
Kommentar