Eregi需要更换吗?

时间:2012-03-11 12:51:19

标签: php regex preg-match eregi

我在google搜索机器人行为时获得了以下功能。当我使用此代码时,我得到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();作为一个新手,我失败了,虽然我试着在我的尽头......有人能指导我吗?

2 个答案:

答案 0 :(得分:4)

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

替换

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

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

答案 1 :(得分:0)

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

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