把文本中的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源码分析之jQuery.fn.each与jQuery.each用法
Jan 23 Javascript
JavaScript实现的一个倒计时的类
Mar 12 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
Dec 15 Javascript
基于javascript实现窗口抖动效果
Jan 03 Javascript
浅析BootStrap栅格系统
Jun 07 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
React简单介绍
May 24 Javascript
在 Angular中 使用 Lodash 的方法
Feb 11 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
Mar 16 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 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 动态多文件上传
2009/01/18 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
PHP多进程简单实例小结
2019/11/09 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python中logging日志库实例详解
2020/02/19 Python
python实现在线翻译功能
2020/03/03 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
如何在存储过程中使用Loop
2016/01/05 面试题
高中数学教师求职信
2013/10/30 职场文书
思想专业自荐信范文
2013/12/25 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
通信工程专业求职信
2014/06/04 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
我的中国梦主题班会
2015/08/14 职场文书
通知怎么写?
2019/04/17 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle