FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Någon skriver i ett forum in en länk (med http:// eller www så man kan identifiera den som en länk). Jag vill göra denna klickbar, alltså lägga till länk.
Hur gör jag den omvandlingen smartast i php? Användaren tillåts själv inte att använda html i sin text. EDIT: borde väl legat under serversidans.. |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Har WN som tidsfördriv
|
Kod:
<?php function email2link($string) { return preg_replace("!(^|[ \n\r\t])([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)!i","\\1<a href=\"mailto:\\2\">\\2</a>",$string); } function url2link ( $Text ) { $Text = email2link($Text); // First match things beginning with http:// (or other protocols) $NotAnchor = '(?<!"|href=|href\s=\s|href=\s|href\s=)'; $Protocol = '(http|ftp|https):\/\/'; $Domain = '[\w]+(.[\w]+)'; $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?'; $Expr = '/' . $NotAnchor . $Protocol . $Domain . $Subdir . '/i'; $Result = preg_replace( $Expr, "<a href=\"$0\" title=\"$0\" target=\"_blank\">$0</a>", $Text ); // Now match things beginning with www. $NotAnchor = '(?<!"|href=|href\s=\s|href=\s|href\s=)'; $NotHTTP = '(?<!:\/\/)'; $Domain = 'www(.[\w]+)'; $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?'; $Expr = '/' . $NotAnchor . $NotHTTP . $Domain . $Subdir . '/i'; return preg_replace( $Expr, "<a href=\"http://$0\" title=\"http://$0\" target=\"_blank\">$0</a>", $Result ); } echo url2link("Det här är en adress@domän.com, och det här en länk://till.nagonting.com/hej.html?id=12"); ?> |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Mycket flitig postare
|
Jag skulle använda preg_replace
http://www.php.net/Preg_replace Nu har jag inte testat detta men prova det här: $text = preg_replace("/(http:\/\/[^\s]*)/","<a href=\"\\1\">\\1</a>",$text); Hoppas det hjälper Edit: Om du vill ha för bara www också får du göra om lite, kanske såhär(obs har inte testat) $text = preg_replace("/(http:\/\/www|http:\/\/|www)([^\s]*)/","<a href=\"http://www\\2\">\\1\\2</a>",$text); |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Tack koala och jimmie! Detta kommer hjälpa mig mycket.
![]() |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Mycket flitig postare
|
Finns även lite lösningar på:
http://regexlib.com/DisplayPatterns.aspx?c...=1&categoryId=2 |
|||
![]() |
![]() |
Svara |
|
|