把文本中的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 统计时间
Mar 09 Javascript
lib.utf.js
Aug 21 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 Javascript
基于JavaScript自定义构造函数的详解说明
Apr 24 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
Mar 23 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
Jun 07 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
javascript关于“时间”的一次探索
Jul 24 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数组函数array_walk用法示例
2016/05/26 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
实现动画效果核心方式的js代码
2013/09/27 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
python中的一些类型转换函数小结
2013/02/10 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python+django实现文件下载
2016/01/17 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
python绘制彩虹图
2019/12/16 Python
python关于调用函数外的变量实例
2019/12/26 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
How TDD works
2012/09/30 面试题
大一自我鉴定范文
2013/10/04 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
宣传普通话标语
2014/06/27 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
委托证明范本
2014/11/25 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
详解Redis瘦身指南
2021/05/26 Redis
python playwright之元素定位示例详解
2022/07/23 Python