« 职场九大谎言php字符串函数 strpos,substr »

获取页面中的所有链接地址的PHP函数

下面这个用PHP写的函数,可以获取任意的字符串$string中的所有链接地址($string可以是从一个HTML页面文件直接读取出来的字符串),结果保存在一个数组中返回.该函数自动把电子邮件地址排除在外,而且返回的数组中不会有重复元素.

function GetAllLink($string)
{
  $string = str_replace("\r","",$string);
  $string = str_replace("\n","",$string);
  
  $regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)"; 
  $regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)";  

  //去掉标签之间的文字
  $string = eregi_replace(">[^<>]+<","><", $string);       
  
  //去掉JAVASCRIPT代码
  $string = eregi_replace("<!--.*//-->","", $string);
  
  //去掉非<a>的HTML标签  
  $string = eregi_replace("<[^a][^<>]*>","", $string); 
 
  //去掉EMAIL链接       
  $string = eregi_replace("<a([ ]+)href=([\"']*)mailto:($regex[email])([\"']*)[^>]*>","", $string); 
  
  //替换需要的网页链接 
  $string = eregi_replace("<a([ ]+)href=([\"']*)($regex[url])([\"']*)[^>]*>","\\3\t", $string); 

  $output[0] = strtok($string, "\t");
  while(($temp = strtok("\t")))
  {
    if($temp && !in_array($temp, $output))
      $output[++$i] = $temp;
  }

  return $output;
}

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站目录

最近发表

最新评论及回复

文章归档

Search

Powered By Z-Blog 1.8 Terminator(beta) Build 71218 Designed by Michael

Copyright 0-9999 subin.org.cn Rights Reserved. 晋ICP备08000685号