首頁  >  文章  >  web前端  >  把文字中的URL位址轉換成可點選連結的JavaScript、PHP自訂函數_javascript技巧

把文字中的URL位址轉換成可點選連結的JavaScript、PHP自訂函數_javascript技巧

WBOY
WBOY原創
2016-05-16 16:40:511934瀏覽

這幾天在寫一個小程式的時候,需要用到正規表示式來匹配使用者輸入文字中的URL位址,然後將URL位址替換成可以點擊的連結。 URL位址的匹配,我想這應該是大家在做驗證處理中常會用到的,這裡就把我整合的一個比較完整的表達式給出來:

複製程式碼 程式碼如下:

var URL = /(https?://|ftps?://)?((d{1,3}.d{1,3}.d{1,3}.d{1,3})(: [0-9] )?|(localhost)(:[0-9] )?|([w] .)(S )(w{2,4})(:[0-9] )?)(/ ?([w#!:.? =&%@!-/] ))?/ig;

這個表達式可以符合 http,https,ftp,ftps以及IP位址的URL位址。還算是URL位址匹配計較完善的。利用這個表達式我寫了兩個小函數,將用戶留言的URL地址替換成可點擊的鏈接,沒有什麼太難的,就是利用JavaScript 的 replace() 函數來實現替換 URL 為 link:

JavaScript版:

複製程式碼 程式碼如下:

/**
 * JavaScrit 版本
 * 將URL位址轉換為完整的A標籤連結代碼
 */
var replaceURLToLink = function (text) {
        text = text.replace(URL, function (url) {
            var urlText = url;
            if (!url.match('^https?://')) {
                url = 'http://' url;
            }
            return '' urlText '';
        });

        return text;
    };

PHP版:

複製程式碼 程式碼如下:

/**
 * PHP 版本 在 Silva 程式碼的基礎上修改的
 * 將URL位址轉換為完整的A標籤連結代碼
 */
/**===============================================
 名稱        :replace_URLtolink()
 版本    :1.0
 作者      : J de Silva
 描述:返回 VOID;處理轉換
 字串中的可點選連結的 URL。
 類型        :函數
 =================================================*/

函數replace_URLtolink($text) {
    // 抓取任何看起來像 URL 的內容...
    $urls = array();
   
    // 建置模式
    $scheme = '(https?://|ftps?://)?';
    $www = '([w] .)';
    $local = 'localhost';
    $ip = '(d{1,3}.d{1,3}.d{1,3}.d{1,3})';
    $name = '([w0-9] )';
    $tld = '(w{2,4})';
    $port = '(:[0-9] )?';
    $the_rest = '(/?([w#!:.? =&%@!-/] ))?';
$pattern = $scheme.'('.$ip.$port.'|'.$www.$name.$tld.$port.'|'.$local.$port.')'.$the_rest;
    $pattern = '/'.$pattern.'/is';
   
    // 取得 URL
    $c = preg_match_all($pattern, $text, $m);
   
    如果 ($c) {
        $urls = $m[0];
    }
   
    // 取代所有 URL
    if (!empty($urls)) {
        foreach ($urls as $url) {
            $pos = strpos('http://', $url);
           
            if (($pos && $pos != 0) || !$pos) {
                $fullurl = 'http://'.$url;
            } 其他 {
                $fullurl = $url;
            }
           
            $link = ''.$url.'';
           
            $text = str_replace($url, $link, $text);
        }
    }
   
    返回 $text;
}

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn