2012-01-13 4 views
1

Je permets aux utilisateurs de poster des commentaires en utilisant un champ de textarea et parfois ils publient des URLs. Ce que je dois faire est de convertir cette URL de db avant de l'afficher comme un lien réel cliquable, mais sans permettre les balises html. Je préférerais le faire en utilisant php ou jquery si possible. J'ai pensé utiliser quelque chose comme [link] [/ link] mais je dois le faire sans effort supplémentaire de la part du membre du site. Des idées s'il vous plaît ??Convertir l'URL du texte en URL cliquable

exemple:

[link]http://www.google.com[/link] 
+0

double possible de http://stackoverflow.com/questions/8188645/javascript-regex-to-match-a-url-in-a-field-of-text et http://stackoverflow.com/questions/1959062/comment-ajouter-anchor-tag-à-un-url-from-text-input – j08691

+0

duplication possible de [php html créer un lien à partir du texte] (http://stackoverflow.com/questions/5252727/php-html-create-link-from-text) – s4y

Répondre

1

Voici un petit script PHP que j'ai écrit. Il semble fonctionner pour moi. Il utilise les méthodes preg_match_all et preg_replace pour faire correspondre tous les liens insérés par l'utilisateur final avec les tags <a>.

<?php 

$text="Click [link]http://www.google.com[/link] or click [link]http://www.yahoo.com[/link]"; 

preg_match_all('/\\[link](.*?)\\[\/link]/s', $text, $links); 

$link_count=count($links); 
for($i=0;$i<$link_count;$i++){ 
    $link_url=preg_replace("/\[link]/", "", $links[0][$i]); 
    $link_url=preg_replace("/\[\/link]/","",$link_url); 
    $text=str_replace($links[0][$i],"<a href=\"" . $link_url . "\">" . $link_url . "</a>",$text); 
} 

echo $text; 

?> 
0

Vous pouvez utiliser la méthode preg_replace:

//URL's 
$pattern = "/\[link\=(.*)\](.*)\[\/link\]/i"; 
$replace = "<a href=\"$1\">$2</a>"; 
echo preg_replace($pattern, $replace, $subject);