我一直在尝试运行我网站的两种不同变体:一种用于桌面,一种用于移动。我决定让它像这样工作(使用 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/