【问题标题】:How to build array for checking user agent against browscap and browser version variable and output a if statement?如何构建数组以检查用户代理与 browscap 和浏览器版本变量并输出 if 语句?
【发布时间】:2019-08-16 01:42:36
【问题描述】:

我有一个读取用户浏览器代理的文件,如果它与浏览器名称和版本匹配,它会输出一个 if 语句。

$firefoxv = "66.0";
$chromev = "73.0";

if ($browser1['browser'] == "Firefox") {
    if ($browser1['version'] !== $firefoxv)  { 
            echo '<p style="margin-top: 20px;"><b class="label label-danger"><i class="fa fa-exclamation"></i> Your Browser is Out of Date</b></p>Current Version: <b class="label label-success">'.$firefoxv.'</b> - Your Version: <b class="label label-danger">'.$browser1['version'].'</b>';
        } else {
            echo '<p style="margin-top: 20px;"><b class="label label-success"><i class="fa fa-check"></i> Your Browser is Up to Date</b></p>';
        }
}

if ($browser1['browser'] == "Chrome") {
    if ($browser1['version'] !== $chromev)  { 
            echo '<p style="margin-top: 20px;"><b class="label label-danger"><i class="fa fa-exclamation"></i> Your Browser is Out of Date</b></p>Current Version: <b class="label label-success">'.$chromev.'</b> - Your Version: <b class="label label-danger">'.$browser1['version'].'</b>';
        } else {
            echo '<p style="margin-top: 20px;"><b class="label label-success"><i class="fa fa-check"></i> Your Browser is Up to Date</b></p>';
        }
}

现在我要在此列表中添加更多内容,并且我希望能够在 1 条语句中包含所有这些内容,因此我不会一遍又一遍地复制相同的代码。 我的新变量将像这样列出:

$android_browser="Android";
$android_ver="5.1";
$android_webView_browser="Android WebView";
$android_webView_ver="33.0";
$chrome_browser="Chrome";
$chrome_ver="73.0";
$chromium_browser="Chromium";
$chromium_ver="73.0";

我希望它具有与上面相同的 if 语句,但可以使用新的变量集。这可以用某种数组或类似的东西来完成吗?

它需要基本上查找并匹配浏览器名称,然后一旦匹配,检查版本,如果用户浏览器匹配变量中的版本以显示“浏览器最新”,否则显示“浏览器已过期”。

谢谢

【问题讨论】:

  • 为什么$android_browser="Android"; 会与$chrome_browser="Chrome"; 同时设置?您应该只处理其中一个或另一个,所以只需 $browser 就足够了。
  • @MonkeyZeus 感谢您的建议,知道我如何才能使该声明与我需要和已经拥有的部件一起使用吗?

标签: php arrays browscap


【解决方案1】:

我将创建一个数组,您可以在其中使用您调用的 $browser1['browser'] 的值直接访问浏览器版本信息。

例如:

$versions = Array(
  "Firefox" => "66.0",
  "Chrome" => "73.0",
  ...
);

这样可以通过引用$versions[$browser1['browser']]的值快速获取最新版本的浏览器

为此,您可以检查并查看该值是否来自未知浏览器类型的 NULL。

从那里,您只需一条语句即可检查任何浏览器/版本方案:

if ($browser1['version'] < $version[$browser1['browser']]){
    echo "<p style=\"margin-top: 20px;\"><b class=\"label label-danger\"><i class=\"fa fa-exclamation\"></i> Your Browser is Out of Date</b></p>Current Version: <b class=\"label label-success\">{$version[$browser1['browser']]}</b> - Your Version: <b class=\"label label-danger\">{$browser1['version']}</b>";
}
else {
    echo "<p style=\"margin-top: 20px;\"><b class=\"label label-success\"><i class=\"fa fa-check\"></i> Your Browser is Up to Date</b></p>";
}

要添加新的浏览器或版本,您只需更新 Array。您还需要做更多的事情来确保您从 $versions 获得实际值,但这应该足以让您开始,而无需重复任何语句。

【讨论】:

  • 非常感谢您这样做。只需要调整你在那里的一些变量,它就像一个魅力。
  • @aBe 抱歉,我确实将 $browser1 的几个实例误写为 $browser,已修复。
猜你喜欢
  • 2013-09-09
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
相关资源
最近更新 更多