将文本网址转换为可点击的网址

时间:2012-01-13 20:40:50

标签: php jquery

我允许人们使用textarea字段发表评论,有时他们发布网址。我需要做的是在将这个url显示为真正的可点击链接之前将其从db转换,但不允许使用html标记。如果可能的话,我宁愿使用php或jquery来做。我想过使用像[link] [/ link]这样的东西但是我需要在没有网站成员的任何额外努力的情况下这样做。有什么想法吗?

示例:

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

4 个答案:

答案 0 :(得分: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;

?>

答案 1 :(得分:0)

使用正则表达式在文本块中查找网址,然后附加并添加必要的标记

http://www.regexguru.com/2008/11/detecting-urls-in-a-block-of-text/

答案 2 :(得分:0)

您可能对此软件感兴趣,也可能不感兴趣:http://markitup.jaysalvat.com/examples/bbcode/

答案 3 :(得分:0)

您可以使用preg_replace方法:

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