2012-01-13 98 views
1

我允许用户使用textarea字段发布评论,有时他们会发布网址。我需要做的是将这个网址从数据库转换为真正的可点击链接,但不允许使用html标签。如果可能,我宁愿使用php或jquery。我想过使用[link] [/ link]之类的东西,但我需要这样做,而不需要网站成员的额外努力。请任何想法?将文本网址转换为可点击的网址

例如:

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

的可能的复制http://stackoverflow.com/questions/8188645/javascript-regex-to-match-a-url-in-a-field-of-text和http://stackoverflow.com/questions/1959062/how-to-add-anchor-tag-to-a-url-from-text-input – j08691 2012-01-13 20:43:40

+0

[php html create link from text]可能重复(http://stackoverflow.com/questions/5252727/PHP-HTML创建链接,从文本) – s4y 2012-01-13 20:44:12

回答

1

这是我写的一个小小的PHP脚本。它似乎为我工作。它使用preg_match_all和preg_replace方法将最终用户插入的所有链接与<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

您可以使用preg_replace方法:

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