php检测浏览器

标签 php cross-browser browser-detection php-5.2

我有一个奇怪的 css 错误,我似乎无法修复,它只发生在 safari 中,而不是 chrome 中,所以 webkit 目标不会有帮助..我试图做的是设置一个 php block 来检查浏览器 safari 是否,如果是的话,回显一段CSS。

到目前为止,我得到了这个(如下) - 哪个有效,但它也在 Chrome 中输出 echo 语句,知道我出了问题吗?

<?php 

    if(isset($_SERVER['HTTP_USER_AGENT'])){
         $agent = $_SERVER['HTTP_USER_AGENT'];
    }

    if(strlen(strstr($agent,"Safari")) > 0 ){
        $browser = 'safari';
    }
    if($browser=='safari'){
        echo '<style>p {font-weight: 300;}</style>';
    }

?>

我刚刚玩了 echo $_SERVER["HTTP_USER_AGENT"]; 这就是我从 safari 得到的

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17

来自 Chrome

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22

因此它可以区分不同的浏览器,但显然它会将它们读取为 Apple Web Kit,而不是 safari 或 chrome。我的 php 有点生疏,我如何让它专门针对 safari 用户代理?

最佳答案

这是一个基于 po228 答案的更通用的解决方案。我认为直接搜索浏览器的版本号比内部版本号更容易。

$ua = $_SERVER["HTTP_USER_AGENT"];      // Get user-agent of browser

$safariorchrome = strpos($ua, 'Safari') ? true : false;     // Browser is either Safari or Chrome (since Chrome User-Agent includes the word 'Safari')
$chrome = strpos($ua, 'Chrome') ? true : false;             // Browser is Chrome

if($safariorchrome == true AND $chrome == false){ $safari = true; }     // Browser should be Safari, because there is no 'Chrome' in the User-Agent

// Check for version numbers 
$v1 = strpos($ua, 'Version/1.') ? true : false;
$v2 = strpos($ua, 'Version/2.') ? true : false;
$v3 = strpos($ua, 'Version/3.') ? true : false;
$v4 = strpos($ua, 'Version/4.') ? true : false;
$v5 = strpos($ua, 'Version/5.') ? true : false;
$v6 = strpos($ua, 'Version/6.') ? true : false;

// Test versions of Safari
if($safari AND $v1){ echo 'Safari Version 1'; }
else if($safari AND $v2){ echo 'Safari Version 2'; }
else if($safari AND $v3){ echo 'Safari Version 3'; }
else if($safari AND $v4){ echo 'Safari Version 4'; }
else if($safari AND $v5){ echo 'Safari Version 5'; }
else if($safari AND $v6){ echo 'Safari Version 6'; }
else if($safari){ echo 'Safari newer than Version 6'; }
else{ echo "Not Safari"; }

关于php检测浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415883/

相关文章:

PHP TCP套接字连接限制 - Windows服务器

jQuery 非选择器似乎不适用于类

php - ' fatal error : Class 'CURLFile' not found' error in Facebook PHP Application for 'upload photo to user' s timeline'

php - APNS错误警告: stream_socket_client() error

javascript - ios 键盘上的搜索按钮不提交表单

javascript - 更改父类后表格宽度发生变化

javascript - 将 javascript mousedown/mouseup/mousemove/keypress 监听器移植到移动设备时应该注意什么?

javascript - 如何检测旧版本的浏览器并重定向到浏览器支持页面

javascript - 浏览器检测,注意事项。这个可以吗?