把文本中的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 相关文章推荐
用js怎么把&字符换成"&amp:"
Oct 19 Javascript
javascript 打印页面代码
Mar 24 Javascript
JavaScript 字符编码规则
May 04 Javascript
javascript定时变换图片实例代码
Mar 17 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
Dec 11 Javascript
浅谈JavaScript对象与继承
Jul 10 Javascript
jQuery解析XML 详解及方法总结
Sep 28 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
Mar 15 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
Apr 13 Javascript
AngularJS 中ui-view传参的实例详解
Aug 25 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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的5个入手程序
2006/11/23 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
php编程每天必学之验证码
2016/03/03 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
js微信分享API
2020/10/11 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
Python 串口通信的实现
2020/09/29 Python
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
员工自我鉴定
2013/10/09 职场文书
经济学博士求职自荐信范文
2013/11/23 职场文书
民族团结先进个人材料
2014/02/05 职场文书
道德模范事迹材料
2014/12/20 职场文书
企业催款函范本
2015/06/24 职场文书
九年级英语教学反思
2016/02/15 职场文书
python本地文件服务器实例教程
2021/05/02 Python