PHP判断搜索引擎机器人Robot代码
PHP判断搜索引擎机器人Robot代码
有朋友问到如何使用PHP去判断是否是搜索引擎,其实PHP有个很简单的方式去实现,通过_SERVER这个预定义变量中的_SERVER['HTTP_USER_AGENT']可以取得访问者的属性,具体可以看下Diiscuz!是如何判断搜索引擎的,函数代码如下:
functiongetrobot(){
if(!defined('IS_ROBOT')){
kw_spiders='Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
kw_browsers='MSIE|Netscape|Opera|Konqueror|Mozilla';
if(preg_match("/(kw_browsers)/",_SERVER['HTTP_USER_AGENT'])){
define('IS_ROBOT',FALSE);
}elseif(preg_match("/(kw_spiders)/",_SERVER['HTTP_USER_AGENT'])){
define('IS_ROBOT',TRUE);
}else{
define('IS_ROBOT',FALSE);
}
}
returnIS_ROBOT;
}
根据上面还可以精简如下:
if(preg_match("/(Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla)/i",_SERVER['HTTP_USER_AGENT'])){
echo'robot';
}
如果你需要返回详细的搜索引擎名称,而不是是否是搜索引擎机器人的话,请看下面的代码:
functionget_naps_bot(){
useragent=strtolower(_SERVER['HTTP_USER_AGENT']);
if(strpos(useragent,'googlebot')!==false){
return'Googlebot';
}
if(strpos(useragent,'msnbot')!==false){
return'MSNbot';
}
if(strpos(useragent,'slurp')!==false){
return'Yahoobot';
}
if(strpos(useragent,'baiduspider')!==false){
return'Baiduspider';
}
if(strpos(useragent,'sohu-search')!==false){
return'Sohubot';
}
if(strpos(useragent,'lycos')!==false){
return'Lycos';
}
if(strpos(useragent,'robozilla')!==false){
return'Robozilla';
}
returnfalse;
}
这段代码返回了详细的搜索引擎机器人的名称,呵呵大家看那种好用就用哪种吧!