0

ボットの動作をグーグルで検索しているときに、次の関数を取得しました。このコードを使用していると、eregi()式にエラーが発生します。私は規則正しい表現の専門家ではありません。ereri( )減価償却されているので、同じエラーが発生します。

 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();、私は私の最後に試しましたが、私は失敗しています..誰かが私を導くことができますか?

4

2 に答える 2

4

実際には正規表現を使用していない(リテラル文字列と一致している)ため、を使用する必要はありませんpreg_match()

交換

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

if (strpos($spider, $_SERVER['HTTP_USER_AGENT']) !== FALSE)
于 2012-03-11T12:55:29.397 に答える
0

関数strstrを使用して、文字列を比較できます。最初のパラメーターの文字列に2番目のパラメーターの文字列が含まれていない場合は、falseを返します。

foreach ($spiders as $spider)
    {
        if(strstr($_SERVER['HTTP_USER_AGENT'], $spider))
        {
            return TRUE;
        }
    }
于 2012-03-11T13:02:19.487 に答える