2011-10-03 62 views
1
function link_it($text) 
{ 
    $text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" target=\"_blank\">$3</a>", $text); 
    $text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" target=\"_blank\">$3</a>", $text); 
    $text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:[email protected]$3\" target=\"_blank\">[email protected]$3</a>", $text); 
    return($text); 
} 

這就是工作代碼。查找頁面中的鏈接並通過自定義功能運行它

我工作的一個新功能

function shorturl2full($url) 
{ 
    echo 'URL IS: ' . $url; 
    return "FULLLINK"; 
} 

的想法是採取URL,然後返回。稍後將着手將其轉換爲完整的網址。所以像t.co將是他們將看到的完整網址。

$text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" target=\"_blank\">" . shorturl2full("$3") . "</a>", $text); 
     $text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" target=\"_blank\">" . shorturl2full("$3") . "</a>", $text); 
     $text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:[email protected]$3\" target=\"_blank\">[email protected]$3</a>", $text); 
     return($text); 
} 

是我的壞嘗試。

所以,如果你點擊鏈接,應該用原來的,但你看到的應該是shorturl2full

輸出所以像<a href="t.co">FULLLINK</a>

我想嘗試寫我自己的shorturl2full功能我想我對如何做到這一點有非常好的想法。問題出在link_it函數中......它需要將url傳遞給shorturl2full函數並顯示它返回的內容。

回答

2

可以使用preg_replace_callback代替了preg_replace http://nz.php.net/manual/en/function.preg-replace-callback.php

function link_it($text) 
{ 
    $text= preg_replace_callback("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", 'shorturl2full', $text); 
    $text= preg_replace_callback("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", 'shorturl2full', $text); 
    $text= preg_replace_callback("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", 'shorturl2full', $text); 
    return($text); 
} 

function shorturl2full($url) 
{ 
    $fullLink = 'FULLLINK'; 
    // $url[0] is the complete match 
    //... you code to find the full link 
    return '<a href="' . $url[0] . '">' . $fullLink . '</a>'; 
} 

希望這有助於

0

previous answer我展示了一個名爲make_clickable功能,如果有設置其中獲得套用至每個URI一個可選的回調參數:

make_clickable($text, 'shorturl2full'); 

也許是有益的,或者至少給出了一些想法。

相關問題