php - 如何让 php 判断它是在 iOS 还是 MacOS 上运行

标签 php ios iphone macos

我一直在尝试运行我网站的两种不同变体:一种用于桌面,一种用于移动。我决定让它像这样工作(使用 PHP):如果在 Windows、Mac 或其他桌面操作系统上,运行这个 HTML。如果在 Android、iOS 等上运行该 HTML。当我通过 Windows 或 Android 访问我的网站时,会运行相应操作系统的 HTML。但是,当我通过 iPhone 或 MacBook 访问我的网站时,iPhone 和 Mac 的代码都会运行,无论用户使用的是 iPhone 还是 MacBook:这是我使用的代码:

<!--HTML for macOS --> 

 <?php
if(preg_match( '/macintosh|mac os x/i',  $_SERVER['HTTP_USER_AGENT'])) {

echo' <!--some HTML--> ';  }  ?>


<!--HTML for iPhone--> 


    <?php

       ifif(preg_match('/iphone/i', $_SERVER['HTTP_USER_AGENT'])) {

        echo' <!--some HTML-->  ';  }  ?>

如果想观察问题,去bamfacts.tk谢谢!

最佳答案

以下脚本会告诉您它是 OS X 还是 iOS。您只需要查看什么是 HTTP_USER_AGENT,您就可以在使用一些正则表达式或字符串操作后继续使用。

<?php
// Apple detection array
$Apple = array();
$Apple['UA'] = $_SERVER['HTTP_USER_AGENT'];
$Apple['Device'] = false;
$Apple['Types'] = array('iOS', 'Macintosh');
foreach ($Apple['Types'] as $d => $t) {
    $Apple[$t] = (strpos($Apple['UA'], $t) !== false);
    $Apple['Device'] |= $Apple[$t];
}
// is this an Apple device?
echo
    "<p>Apple device? ", ($Apple['Device'] ? 'true' : 'false'),
    "</p><p>iOS? ", ($Apple['iOS'] ? 'true' : 'false'),
    "</p><p>OS X? ", ($Apple['Macintosh'] ? 'true' : 'false'),
    '</p>';
?>

您也可以使用 Java Script 来实现,如下所示:

var Apple = {};
Apple.UA = navigator.userAgent;
Apple.Device = false;
Apple.Types = ["iOS", "Macintosh"];
for (var d = 0; d < Apple.Types.length; d++) {
    var t = Apple.Types[d];
    Apple[t] = !!Apple.UA.match(new RegExp(t, "i"));
    Apple.Device = Apple.Device || Apple[t];
}

// is this an Apple device?
alert(
    "Is it an Apple device? " + Apple.Device +
    " \nIs it iOS? " + Apple.iOS +
    " \nIs it OSX? " + Apple.Macintosh
);

您可以看到 Javascript fiddle here .

关于php - 如何让 php 判断它是在 iOS 还是 MacOS 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377827/

相关文章:

PHP:数组里面有一个if语句

ios - iOS 版 Linphone

iphone - iOS7 中 UITableView 滚动指示器闪烁

iphone - 持久化 MPMediaItemCollection 对象的方法? (选自 iPod)

php - 我如何对下表进行排序并获得前 5-5 条记录,前 20-20 条记录?

php - 如何解决 nginx 服务器上缺少 CURL 扩展的问题?

php - Codeigniter 将查询组合在一个循环中

ios - 如何在 iOS 11 中获取 UIDocumentMenuViewController 功能?

ios - 如何为 armv7s 设备编译

iphone - 填充 CoreData 创建的 sqlite 数据库