配色: 字号:
php将url地址转化为完整的a标签链接代码
2016-09-05 | 阅:  转:  |  分享 
  
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)

需要提取的内容如下:

复制代码代码如下:

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

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

复制代码代码如下:

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

//提取替换出所有的IMG标签(统一标记<{img}>)preg_match_all(''/]+>/im'',$content,$imgList);$imgList=$imgList[0];$str=preg_replace(''/]+>/im'',''<{img}>'',$str);//提取替换标准的URL地址$str=preg_replace(''(((f|ht){1}tp://)[-a-zA-Z0-9@:%_/+.~#?&//=]+)'',''\0'',$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=''www.hunanwang.net这是第一个A标签,成长脚印-专注于互联网发展这是第二个A标签。www.xihashipin.com这是第一个需要被提取的URL地址,www.shanxiwang.net这是第二个需要被提取的URL地址。,这是一个IMG标签'';echolinkAdd($content);

返回的内容为:

复制代码代码如下:

www.wang027.com这是第一个A标签,成长脚印-专注于互联网发展这是第二个A标签。www.sm136.com这是第一个需要被提取的URL地址,www.hunanwang.net这是第二个需要被提取的URL地址。,这是一个IMG标签

即为我们想要的内容。

例2,

复制代码代码如下:

/PHP版本在Silva代码的基础上修改的将URL地址转化为完整的A标签链接代码/

functionreplace_URLtolink($text){//grabanythingthatlookslikeaURLwww.visa158.com...$urls=array();//buildthepatterns$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.$visa158.$com.$port.'')''.$the_rest;$pattern=''/''.$pattern.''/is'';//GettheURLs$c=preg_match_all($pattern,$text,$m);if($c){$urls=$m[0];}//ReplacealltheURLsif(!empty($urls)){foreach($urlsas$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)
+1
(本文系白狐一梦首藏)