2012-03-11 33 views
0

我在搜索bot行为时获得了以下功能。当我使用此代码时,我得到eregi()表达式的错误。我不是调情表达的专家。由于ereri()已折旧,我得到相同的错误。Eregi需要更换?

function check_if_spider() 
     { 
      // Add as many spiders you want in this array 
      $spiders = array('Googlebot', 'Yammybot', 'Openbot', 'Yahoo', 'Slurp', 'msnbot', 'ia_archiver', 'Lycos', 'Scooter', 'AltaVista', 'Teoma', 'Gigabot', 'Googlebot-Mobile'); 

      // Loop through each spider and check if it appears in 
      // the User Agent 
      foreach ($spiders as $spider) 
      { 
       if (eregi($spider, $_SERVER['HTTP_USER_AGENT'])) 
       { 
        return TRUE; 
       } 
      } 
      return FALSE; 
     } 

我该如何修改代码才能使其工作?谷歌搜索说,它应该被转换为preg_match();是一个新手,我在失败,虽然我尝试在我的结局..可以有人指导我?

+0

[将ereg表达式转换为preg]的可能副本(http://stackoverflow.com/questions/6270004/converting-ereg-expressions-to-preg) – mario 2012-03-11 23:38:54

回答

4

您实际上并没有使用正则表达式(您正在匹配文字字符串),因此不需要使用preg_match()

更换

if (eregi($spider, $_SERVER['HTTP_USER_AGENT'])) 

if (strpos($spider, $_SERVER['HTTP_USER_AGENT']) !== FALSE) 
0

您可以使用该功能strstr比较字符串。 如果第一个参数中的字符串不包含第二个参数中的字符串,则返回false。

foreach ($spiders as $spider) 
    { 
     if(strstr($_SERVER['HTTP_USER_AGENT'], $spider)) 
     { 
      return TRUE; 
     } 
    }