把文本中的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 相关文章推荐
解析John Resig Simple JavaScript Inheritance代码
Dec 03 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
Aug 30 Javascript
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
node.js中的console用法总结
Dec 15 Javascript
javascript基于DOM实现权限选择实例分析
May 14 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
Vue2.0如何发布项目实战
Jul 27 Javascript
微信小程序获取手机号授权用户登录功能
Nov 09 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
Angular5中提取公共组件之radio list的实例代码
Jul 10 Javascript
vue+axios实现post文件下载
Sep 25 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合并js请求的例子
2013/11/01 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
js获取ip和地区
2017/03/10 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
Python 实现数组相减示例
2019/12/27 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
便利店投资创业计划书
2014/02/08 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
经典促销广告词大全
2014/03/19 职场文书
交通文明倡议书
2014/05/16 职场文书
董事长秘书工作职责
2014/06/10 职场文书
社团活动总结报告
2014/06/27 职场文书
爱心募捐通知范文
2015/04/27 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
酒店员工手册范本
2015/05/14 职场文书
力克胡哲观后感
2015/06/10 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python