Как я могу сделать это регулярное выражение для проверки обратных ссылок, отсутствуют некоторые сайты - PullRequest
0 голосов
/ 21 сентября 2009
<? $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 голосов
/ 21 сентября 2009

Проблема может возникать из-за «жадных совпадений», таких как .* в вашем регулярном выражении - они будут продолжать сопоставляться столько, сколько могут, сглатывая два тега, в которых, как вы думали, совпадал только один. Не уверен, что вы можете исправить это в ereg, но разве вы не должны использовать более продвинутый preg много лет назад? С preg вы можете явно запросить совпадение «ленивый» (он же «не жадный»), используя .*?, что может решить эту проблему (могут быть и другие - если вы дадите нам примеры проблем, которые вы наблюдаете, Вам будет легче помочь в отладке! -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...