把文本中的URL地址轉(zhuǎn)換為可點擊鏈接的JavaScript、PHP自定義函數(shù)
這幾天在寫一個小程序的時候,需要用到正則表達(dá)式匹配用戶輸入文本中的URL地址,然后將URL地址替換成可以點擊的鏈接。URL地址的匹配,我想這應(yīng)該是大家在做驗證處理中常會用到的,這里就把我整合的一個比較完整的表達(dá)式給出來:
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;
這個表達(dá)式可以匹配 http,https,ftp,ftps以及IP地址的URL地址。還算是URL地址匹配計較完善的。利用這個表達(dá)式我寫了兩個小函數(shù),將用戶留言的URL地址替換成可點擊的鏈接,沒有什么太難的,就是利用JavaScript 的 replace() 函數(shù)來實現(xiàn)替換 URL 為 link:
JavaScript版:
/**
* JavaScrit 版本
* 將URL地址轉(zhuǎn)化為完整的A標(biāo)簽鏈接代碼
*/
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 代碼的基礎(chǔ)上修改的
* 將URL地址轉(zhuǎn)化為完整的A標(biāo)簽鏈接代碼
*/
/** =============================================
NAME : replace_URLtolink()
VERSION : 1.0
AUTHOR : J de Silva
DESCRIPTION : returns VOID; handles converting
URLs into clickable links off a string.
TYPE : functions
============================================= */
function replace_URLtolink($text) {
// grab anything that looks like a URL...
$urls = array();
// build the patterns
$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';
// Get the URLs
$c = preg_match_all($pattern, $text, $m);
if ($c) {
$urls = $m[0];
}
// Replace all the URLs
if (! empty($urls)) {
foreach ($urls as $url) {
$pos = strpos('http\:\/\/', $url);
if (($pos && $pos != 0) || !$pos) {
$fullurl = 'http://'.$url;
} else {
$fullurl = $url;
}
$link = ''.$url.'';
$text = str_replace($url, $link, $text);
}
}
return $text;
}
- PHP實現(xiàn)使用優(yōu)酷土豆視頻地址獲取swf播放器分享地址
- 解析獲取優(yōu)酷視頻真實下載地址的PHP源代碼
- php利用騰訊ip分享計劃獲取地理位置示例分享
- PHP采集騰訊微博的實現(xiàn)代碼
- 騰訊QQ php程序員面試題目整理
- php實現(xiàn)把url轉(zhuǎn)換迅雷thunder資源下載地址的方法
- PHP中IP地址與整型數(shù)字互相轉(zhuǎn)換詳解
- PHP轉(zhuǎn)換IP地址到真實地址的方法詳解
- php獲取當(dāng)前頁面完整URL地址
- php將url地址轉(zhuǎn)化為完整的a標(biāo)簽鏈接代碼(php為url地址添加a標(biāo)簽)
- PHP實現(xiàn)將優(yōu)酷土豆騰訊視頻html地址轉(zhuǎn)換成flash swf地址的方法
相關(guān)文章
Javacript實現(xiàn)顏色梯度變化和漸變的效果代碼
用js對導(dǎo)航欄的顏色做了梯度的變化處理,通過處理..獲取兩種顏色在變化時的各種顏色字符串,并且字符串的個數(shù),即獲取的頻率可以調(diào)節(jié)2013-05-05javascript實現(xiàn)滾動效果的數(shù)字時鐘實例
這篇文章主要是介紹使用javascript來實現(xiàn)數(shù)字時鐘滾動的效果,非常實用,有需要的朋友們可以來參考學(xué)習(xí)。2016-07-07JS+CSS實現(xiàn)的經(jīng)典圓角下拉菜單效果代碼
這篇文章主要介紹了JS+CSS實現(xiàn)的經(jīng)典圓角下拉菜單效果代碼,可實現(xiàn)非常經(jīng)典的圓角下拉菜單效果,涉及JavaScript動態(tài)操作頁面元素css樣式的相關(guān)技巧,需要的朋友可以參考下2015-10-10