首页 > php教程 > PHP源码 > 正文

php将URL地址转化为完整的A标签链接代码

php中文网
发布: 2016-06-08 17:22:48
原创
1360人浏览过

前面介绍过js把文本链接转换成A标签,现在看一个php的方法,这个是在 Silva 代码的基础上修改的,如果有不完善的地方大家可提出来。

<script>ec(2);</script>

需要提取的内容如下:

http://baidu.com这是第一个A标签,
成长脚印-专注于互联网发展这是第二个A标签。
http://www.111cn.net这是第一个需要被提取的URL地址,
http://blog.baidu.com这是第二个需要被提取的URL地址'。
,这是一个IMG标签

类似微博中的自动提取URL为超链接地址。即将红色标记的内容提取出来添加A标签,转换成真正的超链接。网上搜索了很久,没有找到一个切实可行的解决方案。大都只是简单的提取URL(A标签和IMG标签内的地址也被提取替换了),并不能满足以上需求。正则表达式中也没发现能够实现提取时过滤掉A标签的方法。于是转换了一下思路,“曲线救国”。即,先将所有的A标签和IMG标签正则替换为某一个统一的标记,然后再提取URL地址替换为超链接,最后再将统一的标记还原替换为以前的A标签和IMG标签便解决了。

 代码如下 复制代码

function linkAdd($content){
 //提取替换出所有A标签(统一标记)
 preg_match_all('/.*?/i',$content,$linkList);
 $linkList=$linkList[0];
 $str=preg_replace('/.*?/i','',$content);

 //提取替换出所有的IMG标签(统一标记)
 preg_match_all('/@@##@@]+>/im',$content,$imgList);
 $imgList=$imgList[0];
 $str=preg_replace('/@@##@@]+>/im','',$str);
 
 //提取替换标准的URL地址
 $str=preg_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_/+.~#?&//=]+)','\0',$str);
 
 //还原A统一标记为原来的A标签
 $arrLen=count($linkList);
 for($i=0;$i   $str=preg_replace('//',$linkList[$i],$str,1);
 }
 
 //还原IMG统一标记为原来的IMG标签
 $arrLen2=count($imgList);
 for($i=0;$i   $str=preg_replace('//',$imgList[$i],$str,1);
 }
 
 return $str;
}

$content='
http://baidu.com这是第一个A标签,
成长脚印-专注于互联网发展这是第二个A标签。
http://www.111cn.net这是第一个需要被提取的URL地址,
http://blog.baidu.com这是第二个需要被提取的URL地址。
@@##@@,这是一个IMG标签';
echo linkAdd($content);


返回的内容为:


http://baidu.com这是第一个A标签, 成长脚印-专注于互联网发展这是第二个A标签。 http://www.111cn.net这是第一个需要被提取的URL地址, http://blog.baidu.com这是第二个需要被提取的URL地址。
php将URL地址转化为完整的A标签链接代码,这是一个IMG标签

即为我们想要的内容。

例2,

 代码如下 复制代码

/**
 * 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]+.)';
    $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.')'.$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;
}

例一测试过,例二没有测试过大家测试一下看那个好用用那个吧。

立即学习PHP免费学习笔记(深入)”;

php将URL地址转化为完整的A标签链接代码
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号