如何在PHP中自动将网址转换为超链接?

时间:2011-04-03 18:17:01

标签: php function

我有一个输出状态更新的脚本,我需要编写一个脚本,自动将类似www.example.com的内容更改为Twitter和Facebook等大量文本中的超链接。我可以在PHP中使用哪些函数?如果你知道一个教程,请发帖。

4 个答案:

答案 0 :(得分:7)

$string = " fasfasd  http://webarto.com   fasfsafa";

echo preg_replace("#http://([\S]+?)#Uis", '<a rel="nofollow" href="http://\\1">\\1</a>', $string);

输出:

 fasfasd  <a rel="nofollow" href="http://webarto.com">webarto.com</a>   fasfsafa

答案 1 :(得分:0)

您可以使用正则表达式将URL替换为链接。看看这个帖子的答案:PHP - Add link to a URL in a string

答案 2 :(得分:0)

很棒的解决方案!

我想自动链接网络链接,并截断显示的网址文字,因为长网址在某些平台上突破了布局。

经过多次使用正则表达式后,我意识到解决方案实际上是CSS - this site使用CSS空格提供了一个简单的解决方案。

答案 3 :(得分:-1)

这是工作函数

function AutoLinkUrls($str,$popup = FALSE){
if (preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)){
    $pop = ($popup == TRUE) ? " target=\"_blank\" " : "";
    for ($i = 0; $i < count($matches['0']); $i++){
        $period = '';
        if (preg_match("|\.$|", $matches['6'][$i])){
            $period = '.';
            $matches['6'][$i] = substr($matches['6'][$i], 0, -1);
        }
        $str = str_replace($matches['0'][$i],
                $matches['1'][$i].'</xmp><a href="http'.
                $matches['4'][$i].'://'.
                $matches['5'][$i].
                $matches['6'][$i].'"'.$pop.'>http'.
                $matches['4'][$i].'://'.
                $matches['5'][$i].
                $matches['6'][$i].'</a><xmp>'.
                $period, $str);
    }//end for
}//end if
return $str; }