2012-03-11 5 views
0

У меня была следующая функция при поиске по боту. в то время как я использую этот код, я получаю ошибку для выражения 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; 
     } 

Как я могу изменить код, чтобы заставить его работать? google search говорит, что он должен быть преобразован в preg_match();, будучи новичком, я на провал, хотя я пытался в конце. Может ли кто-нибудь мне навестить?

+0

возможно дубликат [Преобразование Ерег выражений PREG] (http://stackoverflow.com/questions/6270004/converting-ereg-expressions-to-preg) – mario

ответ

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; 
     } 
    }