Kom ihåg mig?
Home Menu

Menu


Göra länk klickbar

Ämnesverktyg Visningsalternativ
Oläst 2005-07-23, 11:17 #1
aikon aikon är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 277
aikon aikon är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 277
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..
aikon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-23, 12:12 #2
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
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");
?>
Ovanstående kan nog hjälpa dig.
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-23, 12:22 #3
jimmies avatar
jimmie jimmie är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 751
jimmie jimmie är inte uppkopplad
Mycket flitig postare
jimmies avatar
 
Reg.datum: Oct 2004
Inlägg: 751
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);
jimmie är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-23, 12:46 #4
aikon aikon är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 277
aikon aikon är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 277
Tack koala och jimmie! Detta kommer hjälpa mig mycket.
aikon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-23, 15:35 #5
Filips avatar
Filip Filip är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2003
Inlägg: 935
Filip Filip är inte uppkopplad
Mycket flitig postare
Filips avatar
 
Reg.datum: Jan 2003
Inlägg: 935
Finns även lite lösningar på:
http://regexlib.com/DisplayPatterns.aspx?c...=1&categoryId=2
Filip är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:18.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017