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

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

需要提取的内容如下:

需要提取的内容如下:

<a
href=”
<a
href=”

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

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

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

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

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);

 //提取替换出所有的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;
}

//提取替换出所有的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;}

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

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

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

返回的内容为: