把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数


Posted in Javascript onJuly 29, 2014

这几天在写一个小程序的时候,需要用到正则表达式匹配用户输入文本中的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标签链接代码

 */

/** =============================================

 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;

}
Javascript 相关文章推荐
JQuery this 和 $(this) 的区别
Aug 23 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
Jun 18 Javascript
JS打开图片另存为对话框实现代码
Dec 26 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
微信小程序CSS3动画下拉菜单效果
Nov 04 Javascript
JS原型prototype和__proto__用法实例分析
Mar 14 Javascript
Vue2.0 $set()的正确使用详解
Jul 28 Javascript
vue路由的配置和页面切换详解
Sep 09 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
Apr 19 Javascript
JavaScript eval() 函数介绍及应用示例
Jul 29 #Javascript
javascript从image转换为base64位编码的String
Jul 29 #Javascript
javascript自定义函数参数传递为字符串格式
Jul 29 #Javascript
处理文本部分内容的TextRange对象应用实例
Jul 29 #Javascript
js键盘事件的keyCode
Jul 29 #Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 #Javascript
让浏览器DOM元素最后加载的js方法
Jul 29 #Javascript
You might like
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php 函数中使用static的说明
2012/06/01 PHP
php 保留字列表
2012/10/04 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
require.js中的define函数详解
2017/07/10 Javascript
vue中的scope使用详解
2017/10/29 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
Python 学习笔记
2008/12/27 Python
Python中设置变量访问权限的方法
2015/04/27 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
pandas 时间格式转换的实现
2019/07/06 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
如何基于python实现不邻接植花
2020/05/01 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
最受欢迎的自我评价
2013/12/22 职场文书
给同事的道歉信
2014/01/11 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
班级读书活动总结
2014/06/30 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
小学一年级数学教学反思
2016/02/16 职场文书