2012-07-23 85 views
0

我有一个包含一些链接的字符串。我需要将它们转换为可点击的链接,但问题在于很多这些不以http或www开头。我如何转换它们而不会无意中影响字符串的其余部分?将网址转换为可点击的链接 - domain.com/foo/bar

样品字符串:http://pastebin.com/bMe9pGbv

+0

你能显示你的字符串吗? – 2012-07-23 08:23:58

+0

字符串只包含多个URL还是包含其他单词? – DonSeba 2012-07-23 08:24:07

+0

http://pastebin.com/bMe9pGbv – HyderA 2012-07-23 08:29:27

回答

1

首先我们需要隔离文本中的所有链接。我们假设链接没有空间,所以我们使用的空间作为分隔符创建数组与explode

$rows = explode(' ', $text); 

然后,从各行中,我们确定的联系,增加http://(如果它丢失)并添加<a>标签:

foreach ($rows AS $key => $row) { 
    if (preg_match("@^[^\.\n]+\.[^ \n][email protected]", $row)) { 
     if (!preg_match('@^http://@', $row)) { 
      $row = 'http://' . $row; 
     } 

     $rows[$key] = '<a href="'.$row.'">'.$row.'</a>'; 
    } 
} 

最后,我们重建的文本,用implodespace作为分隔符:

$text = implode(' ', $rows); 
-1

这是我用来检测实际的URL(开头的方案),并与<a>取代它的​​解决方案。

<?php 
echo preg_replace(
    "/(http:\/\/|ftp:\/\/|https:\/\/)([^\s,]*)/i", 
    "<a href=\"$1$2\">$1$2</a>", 
    $input 
); 

检测任何不以计划开头的可点击链接都需要更复杂的正则表达式和更多的猜测。

相关问题