PHP检测手机类型和回声

时间:2012-06-15 13:17:46

标签: php user-agent

我正在尝试根据其UserAgent字符串识别访问者的电话类型。但是,我在代码中找不到错误。

<?php

//create an array to be filled with phone type
$arr = phones();

$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
$nokia = strpos($_SERVER['HTTP_USER_AGENT'],"Nokia");

if ($iphone || $android || $palmpre || $ipod || $berry || $nokia == true)
{
    echo "Specially for you as $iphone owner!";
}

?>

2 个答案:

答案 0 :(得分:4)

考虑到其他评论,你不应该自己做。这些用户代理远不是详尽的列表。但是如果你想自己试验一下,我建议尝试以下类似的东西。

如果未找到"iPhone",则条件自动为false,不会评估其他语句。

我喜欢做类似的事情:

$has_mobile_ua = FALSE;
$user_agents = array('iPhone', 'Android', 'webOS', 'BlackBerry', 'iPod', 'Nokia');

foreach ($user_agents as $user_agent) {
  if (strpos($_SERVER['HTTP_USER_AGENT'], $user_agent) !== FALSE) {
    $has_mobile_ua = TRUE;
    break;
  }
}

if ($has_mobile_ua) {
  // your code
}

答案 1 :(得分:0)

对于这种情况,请尝试使用stristr更改strpos ..

$iphone = stristr("$_SERVER[HTTP_USER_AGENT]","iphone");

它对我来说很有用,就像你的代码一样......