澳门新葡萄京官网首页php将URL地址转化为完整的A标签链接代码

function
linkAdd($content){//提取替换出所有A标签preg_match_all(‘/a.*?href=.*?.*?.*?/a/i’,$content,$linkList);$linkList=$linkList[0];$str=preg_replace(‘/a.*?href=.*?.*?.*?/a/i’,'{link}’,$content);

例2,

            $text = str_replace($url, $link, $text);
        }
    }

a href=这是第一个A标签, a
href=成长脚印-专注于互联网发展/a这是第二个A标签。 a href=
target=_blank这是第一个需要被提取的URL地址, a href=
target=_blank这是第二个需要被提取的URL地址。img border=0 alt=
src=_zh-cn.gif,这是一个IMG标签

返回的内容为:

    return $text;
}

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

$content=’
<a
href=”
<a
href=”

<img border=”0″ alt=””
src=”‘;
echo linkAdd($content);

需要提取的内容如下:

function replace_URLtolink($text) { // grab anything that looks like a
URL… $urls = array(); // build the patterns $scheme = ‘(|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.’|’.$$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(”, $url); if
(($pos $pos != 0) || !$pos) { $fullurl = ”.$url; } else { $fullurl =
$url; } $link = ”.$url.”; $text = str_replace($url, $link, $text); }
} return $text;}

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

            if (($pos && $pos != 0) || !$pos) {
                $fullurl = ‘;
            } else {
                $fullurl = $url;
            }

$content=’a href=这是第一个A标签,a
href=成长脚印-专注于互联网发展/a这是第二个A标签。这是第一个需要被提取的URL地址,这是第二个需要被提取的URL地址。img
border=0 alt= src=_zh-cn.gif,这是一个IMG标签’;echo linkAdd($content);

 代码如下

    if ($c) {
        $urls = $m[0];
    }

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

即为我们想要的内容。

 return $str;
}

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

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

 //提取替换标准的URL地址
 $str=preg_replace(‘(((f|ht){1}tp://)[-a-zA-Z0-9@:%_/+.~#?&//=]+)’,’’,$str);

代码如下复制代码

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

function replace_URLtolink($text) {
    // grab anything that looks like a URL…
    $urls = array();

返回的内容为:

需要提取的内容如下:

 //提取替换出所有的IMG标签(统一标记)
 preg_match_all(‘/]+>/im’,$content,$imgList);
 $imgList=$imgList[0];
 $str=preg_replace(‘/]+>/im’,”,$str);

/*** PHP 版本 在 Silva 代码的基础上修改的*
将URL地址转化为完整的A标签链接代码*//**
=============================================NAME :
replace_URLtolink()VERSION : 1.0AUTHOR : J de SilvaDESCRIPTION :
returns VOID; handles convertingURLs 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 = ‘;
            } else {
                $fullurl = $url;
            }
           
            $link = ”.$url.”;
           
            $text = str_replace($url, $link, $text);
        }
    }
   
    return $text;
}

复制代码 代码如下:
function linkAdd($content){
 //提取替换出所有A标签(统一标记)
 preg_match_all(‘/.*?/i’,$content,$linkList);
 $linkList=$linkList[0];
 $str=preg_replace(‘/.*?/i’,”,$content);

即为我们想要的内容。

<a
href=”
<a
href=”
<a href=””
target=”_blank”>
<a href=””
target=”_blank”>
<img border=”0″ alt=””
src=”

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

a href=这是第一个A标签,a
href=成长脚印-专注于互联网发展/a这是第二个A标签。这是第一个需要被提取的URL地址,这是第二个需要被提取的URL地址’。img
border=0 alt= src=_zh-cn.gif,这是一个IMG标签

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

 //还原A统一标记为原来的A标签
 $arrLen=count($linkList);
 for($i=0;$i  $str=preg_replace(‘//’,$linkList[$i],$str,1);
 }

代码如下复制代码

 代码如下

            $link = ”.$url.”;

例2,

<a
href=”
<a
href=”

<img border=”0″ alt=””
src=”

复制代码 代码如下:
这是第一个A标签,
成长脚印-专注于互联网发展这是第二个A标签。

澳门新葡萄京官网首页 1,这是一个IMG标签

需要提取的内容如下:

/**
 * 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
 ============================================= */

    // Replace all the URLs
    if (! empty($urls)) {
        foreach ($urls as $url) {
            $pos = strpos(‘http://’, $url);

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

$content=’
这是第一个A标签,
成长脚印-专注于互联网发展这是第二个A标签。

澳门新葡萄京官网首页 2,这是一个IMG标签’;
echo linkAdd($content);

复制代码 代码如下:
这是第一个A标签,
成长脚印-专注于互联网发展这是第二个A标签。
这是第一个需要被提取的URL地址,
这是第二个需要被提取的URL地址。
澳门新葡萄京官网首页 3,这是一个IMG标签

    // Get the URLs
    $c = preg_match_all($pattern, $text, $m);

返回的内容为:

即为我们想要的内容。

 //还原IMG统一标记为原来的IMG标签
 $arrLen2=count($imgList);
 for($i=0;$i  $str=preg_replace(‘//’,$imgList[$i],$str,1);
 }

    // 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’;

例2,
复制代码 代码如下:
/**
 * PHP 版本 在 Silva 代码的基础上修改的
 * 将URL地址转化为完整的A标签链接代码
 */

发表评论

电子邮件地址不会被公开。 必填项已用*标注