把文本中的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 相关文章推荐
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
Javascript中的this绑定介绍
Sep 22 Javascript
5个最佳的Javascript日期处理类库分享
Apr 15 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
Dec 19 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
js基础之DOM中document对象的常用属性方法详解
Oct 28 Javascript
Vue.js实现实例搜索应用功能详细代码
Aug 24 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
Dec 09 Javascript
vue基础之事件v-onclick="函数"用法示例
Mar 11 Javascript
vue实现局部刷新的实现示例
Apr 16 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 Javascript
详解阿里Node.js技术文档之process模块学习指南
Jan 04 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 实用代码收集
2010/01/22 PHP
php全排列递归算法代码
2012/10/09 PHP
PHP 转义使用详解
2013/07/15 PHP
php身份证号码检查类实例
2015/06/18 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
php实现的顺序线性表示例
2019/05/04 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
Python中的localtime()方法使用详解
2015/05/22 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Django Rest framework频率原理与限制
2019/07/26 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python numpy数组复制使用实例解析
2020/01/10 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
PHP如何删除一个Cookie值
2012/11/15 面试题
给老师的感谢信
2015/01/20 职场文书
大学学生会竞选稿
2015/11/19 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书