キャリアを判別しようと思ったのですが

function mobile_agent(){
$agent = $_SERVER['HTTP_USER_AGENT'];
switch ($agent){
case preg_match("/DoCoMo/", $agent):
$agent = "docomo";
break;

case preg_match("/Vodafone/", $agent) || preg_match("/SoftBank/", $agent):
$agent = "softbank";
break;

case preg_match("/KDDI/", $agent):
$agent = "au";
break;

case preg_match("/DDIPOCKET/", $agent) || preg_match("/WILLCOM/", $agent):
$agent = "willcom";
break;

default:
$agent = FALSE;
}
return $agent;
}

auでアクセスすると返り値が「docomo」になります。
switch内でのpreg_matchはダメなのでしょうか?