2012-03-11 18 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検索では、それはpreg_match();に変換される必要があります、私は失敗しましたが、私は私の最後にしようとしました。誰かが私を導く?

+0

(http://stackoverflow.com/questions/6270004/converting-ereg-expressions-to-preg)PREGにEREG式を変換]の可能な重複 – mario

答えて

4

preg_match()を使用する必要がないので、実際に正規表現(リテラル文字列と一致しています)を使用していません。

は、あなたが文字列を比較する機能strstrを使用することができます

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

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

を交換してください。 最初のパラメータの文字列に2番目のパラメータの文字列が含まれていない場合はfalseを返します。

foreach ($spiders as $spider) 
    { 
     if(strstr($_SERVER['HTTP_USER_AGENT'], $spider)) 
     { 
      return TRUE; 
     } 
    } 
関連する問題