2012-07-23 125 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 
); 

檢測任何不以計劃開頭的可點擊鏈接都需要更復雜的正則表達式和更多的猜測。

相關問題