URLs im Gästebuch automtisch als Link umwandeln

Ich würde gerne bei uns im Gästebuch die URLs, die mit “http://” oder “www” anfangen automatisch als Link ausgeben lassen. Könnte mir jemand dabei helfen und mir sagen wie man das hinbekommen kann? Ich nehme an, man muss das ganze in der “guestbook.php” abändern.

lg plexus

Hallo plexus,

ich kann dir leider nur ne Anregung geben, wie die Umwandlung in php erfolgt:

<?php
function linker($link)
{

$link = str_replace("http://www.","www.",$link);
$link = str_replace("www.","http://www.",$link);
$link = preg_replace(
"/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a href=\"$1\">$1</a>", $link);
$link = preg_replace(
"/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.
([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$link);

return $link;
}

$text = "Dies ist ein Text. Der Link www.oxid-esales.com wird nach Aufruf der Funktion in einen echten, anklickbaren Verweis umgewandelt.";
echo linker($text);

?>

Gefunden auf: http://www.grammiweb.de/php/php013.shtml.

Die Integration des Skriptes in der guestbookentry.tpl ist leider bei meiner Probe fehlgeschlagen. Mein Hintergedanke war die Platzierung um

[{ $entry->oxgbentries__oxcontent->value|nl2br }]

, so dass sich also ergibt:

<?php
function linker($link)
{

$link = str_replace("http://www.","www.",$link);
$link = str_replace("www.","http://www.",$link);
$link = preg_replace(
"/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a href=\"$1\">$1</a>", $link);
$link = preg_replace(
"/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.
([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$link);

return $link;
}

$text = "[{ $entry->oxgbentries__oxcontent->value|nl2br }]";
echo linker($text);

?>

Leider führt OXID das php-Skript nicht aus.
Viele Grüße und viel Erfolg,

Ben

[QUOTE=Piengie;31456]ich kann dir leider nur ne Anregung geben, wie die Umwandlung in php erfolgt:
[/QUOTE]

Danke dir. Das hat mir schon geholfen. Hier mein Lösungsweg…

In der “guestbook.php” am Ende vor “[B]}[/B]” folgende Zeilen einfügen…

public function linker($link)
{

$link = str_replace("http://www.","www.",$link);
$link = str_replace("www.","http://www.",$link);
$link = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a href=\"$1\">$1</a>", $link);
$link = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$link);

return $link;
}

Danach die “guestbook.tpl” öffnen und das hier…

[{ $entry->oxgbentries__oxcontent->value|nl2br }]

wie folgt abändern…

[{ $oView->linker($entry->oxgbentries__oxcontent->value)|nl2br }]

lg plexus :cool:

Was mich jetzt nur noch interessieren würde wäre, wie man HTML-Code im Gästebuch einschalten kann.

[QUOTE=plexus;31671]Was mich jetzt nur noch interessieren würde wäre, wie man HTML-Code im Gästebuch einschalten kann.[/QUOTE]
Was mich bis gerade interessiert hatte war, warum xss so verbreitet ist.

Wenn dann BBCode und selbst dieser überfordert die meisten Kunden.

[QUOTE=MBa;31723]Was mich bis gerade interessiert hatte war, warum xss so verbreitet ist.

Wenn dann BBCode und selbst dieser überfordert die meisten Kunden.[/QUOTE]

Das Gästebuch ist bei uns nicht für Kunden öffentlich zugänglich, sondern nur für Admins. Wir haben es umgebaut und nutzen es derzeit als Todo-Liste. Deshalb wäre es sinnvoll für uns, wenn dort HTML oder auch BBCode eingesetzt werden könnte, um z.B. spezielle Bereiche hervorzuheben, oder auch Bilder in die Nachrichten einzubinden.

lg plexus

Gut, es gibt fertige BBCode Wandler.
Das Einbinden sollte genauso funktionieren, wie das mit den URLs (Text rein=>Text raus).

[QUOTE=plexus;31671]Was mich jetzt nur noch interessieren würde wäre, wie man HTML-Code im Gästebuch einschalten kann.[/QUOTE]
Eigentlich müsste man darauf ja auch den FCK-Editor loslassen können…

Dazu müsste man ein Anpassungsmodul entwickeln…

@csimon: Na, wie wär’s???

[QUOTE=avenger;31773]Eigentlich müsste man darauf ja auch den FCK-Editor loslassen können…

Dazu müsste man ein Anpassungsmodul entwickeln…

@csimon: Na, wie wär’s???[/QUOTE]

Das wäre natürlich die beste Lösung. Darüber hatte ich auch schon nachgedacht. Dürfte eigentlich nicht so schwer sein oder? :wink: