把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数

这几天在写一个小程序的时候,需要用到正则表达式匹配用户输入文本中的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;
}

(0)

相关推荐

  • PHP转换IP地址到真实地址的方法详解

    想要把IPv4地址转为真实的地址,肯定要参考IP数据库,商业的IP数据库存储在关系型数据库中,查询和使用都非常方便,但是成本不是个人和小公 司愿意承受的,所以简单应用的思路就是利用一些免费的IP数据库或者一些大网站提供的查询API,他们的数据量足够我们使用了.1. 利用纯真IP数据库利用本地的QQWry.Dat文件,优点是查询速度非常快,缺点是数据库文件要放在自己的空间内并且要偶尔更新数据库.时间关系废话不多说,下面是 使用这个文件的函数,如果是在WordPress里面使用这个功能,把下面的代码

  • php利用腾讯ip分享计划获取地理位置示例分享

    复制代码 代码如下: <?phpfunction getIPLoc_QQ($queryIP){    $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryIP;    $ch = curl_init($url);    curl_setopt($ch,CURLOPT_ENCODING ,'gb2312');  curl_setopt($ch, CURLOPT_TIMEOUT, 10);   curl_setopt($ch, CU

  • PHP中IP地址与整型数字互相转换详解

    IP转换成整型存储是数据库优化一大趋势,不少人目前存储IP时还在使用字符串类型存储,字符串索引比整型索引消耗资源很多,特别是表中数据量大的时候,以及求查询某一个ip段的数据,今天说的ip是指ip4,ip6不在本文范围内. 系统函数ip2long与long2ip PHP中有内置函数ip2long可以将ip地址转换整型. 复制代码 代码如下: $ip = '210.110.11.49'; echo ip2long($ip); 输出: 复制代码 代码如下: -764540111 输出的整型有负号是因为

  • PHP实现使用优酷土豆视频地址获取swf播放器分享地址

    项目用到临时写的.待完善: 复制代码 代码如下: /*     * 根据用户提交的(swf/html)地址,获取优酷,土豆的swf播放地址     * */    private function _getSwf ($url = '') {        if(isset($url) && !empty($url)){            preg_match_all('/http:\/\/(.*?)?\.(.*?)?\.com\/(.*)/',$url,$types);       

  • php实现把url转换迅雷thunder资源下载地址的方法

    本文实例讲述了php实现把url转换迅雷thunder资源下载地址的方法.分享给大家供大家参考.具体方法分析如下: 如果你知道迅雷地址的生成规则你就不觉得迅雷的url资源下载地址有多么复杂了, 其实雷的地址就是原url前面带AA后面带BB之后再base64_encode编码即可 如下例子所示: 复制代码 代码如下: <?php function Thunder($url, $type='en') { $url ='http://www.jb51.net'; if($type =='en'){ r

  • 腾讯QQ php程序员面试题目整理

    说在前面: 1.以下题目,除了编程任务外其他都需要写在给你提供的草纸上.纸张是珍贵的地球资源,请节约使用.编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了. 2.时间: 基础任务+进阶任务+设计任务 = 90分钟 编程任务 = 60分钟 基础任务: 1.请列举你能想到的UNIX信号,并说明信号用途. 2.请列举.你能想到的所有的字符串查找算法,并加注释简单说明. 3.有一个IP地址(192.168.0.1),请写出其32位无符号整数形式. 4.写出.你能想到的所有HTT

  • php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)

    需要提取的内容如下: 复制代码 代码如下: <a href="http://baidu.com">http://baidu.com</a>这是第一个A标签,<a href="http://blog.baidu.com">成长脚印-专注于互联网发展</a>这是第二个A标签.http://www.jb51.net这是第一个需要被提取的URL地址,http://blog.baidu.com这是第二个需要被提取的URL地址'.

  • PHP采集腾讯微博的实现代码

    复制代码 代码如下: <?php header("Content-type:text/html;charset=utf-8"); $weibo = file_get_contents('http://t.qq.com/starank'); $preg = '/<div class="msgCnt">(.*)<\/div><div class="mediaWrap">/Uis'; preg_match_al

  • 解析获取优酷视频真实下载地址的PHP源代码

    复制代码 代码如下: <?php //--调用方法/demo.php?url=http://v.youku.com/v_show/id_XMzkyODA2NTEy.html echo getYoukuFlv($_GET['url']); function getYoukuFlv($url){     preg_match("#id_(.*?)\.html#",$url,$out);     $id=$out[1];     $content=get_curl_contents('

  • php获取当前页面完整URL地址

    使用PHP编写程序的时候,我们常常想要获取当前页面的URL.下面提供一个用于获取当前页面URL的函数以及使用方法: 示例一: <?php // 说明:获取完整URL function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER[&q

  • PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法

    本文实例讲述了PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法.分享给大家供大家参考,具体如下: 很多用户不知道如何复制flash地址,只能在程序中帮他们替换了: <?php /** * 支持优酷.土豆.腾讯视频html到swf转换 */ function convert_html_to_swf($url = '') { if(!is_string($url) || empty($url)) return ; if(strpos($url, 'swf')) return

随机推荐