我在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();
作为一个新手,我失败了,虽然我试着在我的尽头......有人能指导我吗?
答案 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;
}
}