Automatisches Einfügen von Hyperlinks

blubber

Erfahrenes Mitglied
Hi,

für eine kommentarfunktion meines newsscripts möchte ich die gleiche funktion einbauen, wie sie hier im forum zu sehen ist wenn man einen beitrag postet. Man kann nämlich unten das kästchen "Automatisches Einfügen von Hyperlinks" anklicken, dann wandelt er automatisch gepostete URLs auch in solche um. Hab grad keine Idee wie ichs realisieren soll. Zuerst muss er ja die URL an sich erkennen, dann die [ url ] tags davor und dahinter schreiben, damit dann schlicht mit preg_replace eine URL daraus gemacht werden kann !?

Vorschläge sind erwünscht ;)
 
Klar :)
Ich mach das bisschen kompliziert, geht aber auch, ich post hier mal ein paar Möglichkeiten:

PHP:
// Dieses forum zeigt die [ url] umwandlung leider nicht korrekt an

	$beitrag2 = eregi_replace("([ \r\n])[ url]www.[ /url]([^ ,\r\n]*)","\\1[ url]http://www.\\2[ /url]",$beitrag2);

// Hier die eigentliche "Auflösung" also die Übersetzung...

	$beitrag2 = eregi_replace("\\[url\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=_blank>\\1</a>",$beitrag2);

hope it helps...
 
Zuletzt bearbeitet:
ja weil das forum hier den code gleich umwandelt :)
sorry mom ich versuchs mal anders zu posten:
bla steht nun für: eckige klammer auf url eckige klammer zu
bla2 steht nun für: eckige klammer auf url slash eckige klammer zu


$beitrag = eregi_replace("([ \r\n])www.([^ ,\r\n]*)","\\1blahttp://www.\\2bla2",$beitrag);

und das 2te:
hier steht bla für: eckige klammer auf url backslash backslash eckige klammer zu
und bla2 für: eckige klammer auf slash url backslash backslash eckige klammer zu

$beitrag = eregi_replace("\\bla([^\\[]*)\\bla2","<a href=\"\\1\" target=_blank>\\1</a>",$beitrag);
 
Zuletzt bearbeitet:
blub

also ich denke ich habs kapiert wie dus meinst und habs auch so geschrieben, aber da passiert nix. ich bekomm zwar keine fehlermeldung mehr, aber er wandelt nix um. füge doch einfach eine textdatei an, in der der code drinsteht, das müsste klappen ;)
 
Ich bin jetzt mal ganz dreist und klau mir den Code vom WBB1:
Code:
function parseURL($out) {
 $urlsearch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si";
 $urlsearch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si";
 $urlreplace[]="\\1[ URL]\\2\\4[ /URL]";
 $urlreplace[]="[ URL]\\1\\3[ /URL]";
 $emailsearch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
 $emailsearch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
 $emailreplace[]="\\1[ EMAIL]\\2[ /EMAIL]";
 $emailreplace[]="[ EMAIL]\\0[ /EMAIL]";
 $out = preg_replace($urlsearch, $urlreplace, $out);
 if (strpos($out, "@")) $out = preg_replace($emailsearch, $emailreplace, $out);
 return $out;
}

HTH
 
so dann probier ich mal ob ich das auch hinbekomm dass die UBB urls nicht ersetzt werden:

Code:
$beitrag = eregi_replace("([ \r\n])www.([^ ,\r\n]*)","\\1http://www.\\2",$beitrag);
$beitrag = eregi_replace("\\[url\\]www.([^\\[]*)\\[img\\]www.([^\\[]*)\\[/img\\]\\[/url\\]","<a href=\"http://www.\\1\" target=_blank><img src=\"http://www.\\2\" border=\"0\"></a>",$beitrag);
$beitrag = eregi_replace("\\[url\\]www.([^\\[]*)\\[/url\\]","<a href=\"http://www.\\1\" target=_blank>\\1</a>",$beitrag);

	$beitrag = eregi_replace("\\[url\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=_blank>\\1</a>",$beitrag);
	$beitrag = eregi_replace("\\",$beitrag);
	$beitrag = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[\\/url\\]","<a href=\"\\1\" target=\"_blank\">\\2</a>",$beitrag);
 
Zuletzt bearbeitet von einem Moderator:
hm ok, es ist noch früh am morgen, und vielleicht klappts deshalb nicht, aber irgendwie wandelt er die URL nicht um, wenn ich zum beispiel dieses script hier nach deinem vorschlag, reima, starte:

Code:
<?php


$out = "Das hier ist der Beispieltext von http://www.tutorials.de um zu pruefen, ob er die URL erkennt.";


function parseURL($out) 

{
 $urlsearch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si";
 $urlsearch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si";
 $urlreplace[]="\\1[ URL]\\2\\4[ /URL]";
 $urlreplace[]="[ URL]\\1\\3[ /URL]";
 $emailsearch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
 $emailsearch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
 $emailreplace[]="\\1[ EMAIL]\\2[ /EMAIL]";
 $emailreplace[]="[ EMAIL]\\0[ /EMAIL]";
 $out = preg_replace($urlsearch, $urlreplace, $out);
 if (strpos($out, "@")) $out = preg_replace($emailsearch, $emailreplace, $out);
 return $out;
}

echo $out;
?>

bei dem code von subwoover erhalte ich in der vorletzten zeile eine fehlermeldung.
 
Zuletzt bearbeitet von einem Moderator:
hab zwar jetzt keine lösung dafür aber
top_search.gif
sollte helfen... gab's eigentlich schon oft genug

und nebenbei: vielleicht sollte subwoover den code einfach mal mit [ CODE ] und nicht mit [ PHP ] posten, dann werden keine Zeichen weggeparsed und zusätzlich unten noch "Automatisches Einfügen von Hyperlinks" beim Antworten deaktivieren, dann werden auch keine Links umgewandelt, dann sollte alles gehen. :)
 
hmmm...ich würd sagen, da wir fast bei der lösung des problem sind, ist es eher weniger angebracht jetzt noch mit einer suchfunktion zu kommen, zumal ich diese schon benutzt habe.
Dass subwoover den [ code ] tag anstatt den [ php ] tag benutzen soll, hat er auch schon selbst erkannt.......
 
Zurück