link- und mail- adressen automatisch erkennen

Bleem

Gesperrt
mit welcher function muss ich folgendes problem angehen....

ich will in meiner messagebox das wenn jemand einen link eintragt (mit oder ohne http) oder eine email das die dann automatisch verlinkt wird !
 
mmh das ist sicherlich der 4te thread in 2 wochen wo ich jemandem preg_replace erklären muss :D aber ich machs ja gerne...
PHP:
<?php
$text = preg_replace("=(www\\.)(.*)(\\.)(de|org|com|net|biz|info|fr)=sUi", "<a href='http://www.\\\\2.\\\\4' target='blank'>\\\\1\\\\2\\\\3\\\\4</a>", $text);
?>
macht aus jeder url im format http://www. irgendwas .endung (wobei nur die oben angegebenen endungen beachtet werden) einen hyperlink, der im neuen fenster geöffnet wird.

PHP:
<?php
$text = preg_replace("=(.*)(@)(.*)(\\.)(com|biz|info|org|net|de)=sUi", "<a href='mailto:\\\\1@\\\\3.\\\\5'>\\\\1\\\\2\\\\3\\\\4\\\\5</a>", $text)
?>
analog zu dem oben..nur halt als mail.
AMERKUNG: ich weiß das das erste funktioniert, bei dem mail bin ich mir allerdings nicht sicher - habs nicht probiert..es kann sein das das suchen nach dem @probleme macht..
FAQ zu regulären ausdrücken etc.
 
Für eine Email würde ich den nehmen:

PHP:
$text = preg_replace("/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4}))/si","<a href=\"mailto: \\\\0\">\\\\0</a>",$text);

Der is relativ sicher und ist dennoch so großzügig das er auch andere top-level-domains durchlässt :)
 
@Meisterbrau

dein script hat einen fehler... der macht immer einen - nach jedem zweiten buchstabe nach dem .

PHP:
<?
 while ($variable = mysql_fetch_row ($result))
               {

               #$variable[2] = wordcut ($variable[2], "");
               $variable[2] = strip_tags ($variable[2], "");
               $variable[2] = str_replace (":)", "<img src=\"smilie/smile.gif\">", $variable[2]);
               $variable[2] = str_replace (";)", "<img src=\"smilie/zwink.gif\">", $variable[2]);
               $variable[2] = str_replace (":D", "<img src=\"smilie/biggrin.gif\">", $variable[2]);
               $variable[2] = str_replace (":(", "<img src=\"smilie/sad.gif\">", $variable[2]);

               $variable[2] = preg_replace("=(www.)(.*)(.)(de|at|org|com|net|biz|info|fr)=sUi", "<a href='http://www.\\2\\.4' target='blank'>\\1\\2\\3\\4</a>",$variable[2]);
               #$variable[2] = preg_replace("/^([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si","<a href=\"mailto: \\0\">\\0</a>",$variable[2]);

               echo "<b><a title=\"$variable[5]\">$variable[1]</a></b><br><i>($variable[3] $variable[4])</i><br>";

               ?><?=replace2smiley  (wordcut ( ($variable[2]), 115));?><?

               echo "<hr align=\"center\" width=\"100%\" noshade size=\"1\" style=\"border: 1px dotted #FFFFFF;\">";

               }?>
 
Zuletzt bearbeitet:
Evt gehts mit dem:

PHP:
<?php
$text = preg_replace("/^((https?|ftp|gopher|news|telnet):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si","<a href=\"\\\\1\\\\3\" target=\"_blank\">\\\\1\\\\3</a>",$text);
?>

Teste doch ma :)
 
mmh ich bin mir sicher das mein erster, der der urls umwandelt, klappt..hab ich so aus meinem source übernommen und da funktioniert er..das einzige was ich geändert hab war vor jeden backslash noch einen zu setzten damit das forum den nicht wegparst!

und nochwas @ bleem:
ich weiß nicht wie weit das board deinen code zerstückelt hat aber du mussst beim suchmuster unbedingt aufs korrekte escapen achte, besonders bei " ! (nur so als hinweis)
 
Zuletzt bearbeitet:
Zurück