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来比较字符串。如果第一个参数中的字符串不包含第二个参数中的字符串,则返回 false。

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