如何使这个反向链接检查器正则表达式更好,它缺少一些网站

时间:2009-09-20 23:56:34

标签: php mysql regex

<? $mysite = ('websiteurl');?>
<? echo $mysite; ?> Links not found
<?
  $time_limit = 3600;
  set_time_limit($time_limit);
  include_once("myconnect.php");
  $sql0="select * from trade where 1  ";
  $sql0=$sql0." order by a1 asc";
  $query=mysql_query($sql0);
  $cnt=1;
  while ( ($rs_query=mysql_fetch_array($query)) )
  { 
    if($cnt%2<>0)  
     $bgcolor="#EEEEEE";
    else  
     $bgcolor="#FFFFFF"; 
    $ok="";
    $page="";
    $page = @implode ('', @file ($rs_query["a2"]));
    if ($page)
    {
      if ( ereg("< *[a|A] +.*[h|H][r|R][e|E][f|F] *=.*(http://)?(www.)?(".$mysite.").*", $page) )
      {
        $ok="yes";
      }
      else
      {
        $ok="no";
      }
    }
    else
    {
      $ok="no";
    }
    if($ok=="no"){ echo $rs_query["a1"];}
  } 
?>

1 个答案:

答案 0 :(得分:0)

问题可能来自你的正则表达式中的“贪婪匹配”,例如.* - 它们会尽可能地保持匹配,吞噬两个标记,你认为只有一个匹配。不确定你是否可以在ereg中解决这个问题,但是,多年前你不应该使用更高级的preg吗?使用preg,您可以使用.*?明确要求“懒惰”(又名“非贪婪”)匹配,这可能会解决此问题(可能还有其他问题 - 如果您向我们提供示例你观察到的问题,帮助你调试会更容易! - )。

相关问题