用 PHP 檢測移動裝置

Subodh Poudel 2023年1月30日
  1. 在 PHP 中使用 mobiledetect 類檢測移動裝置
  2. 在 PHP 中使用 HTTP_USER_AGENTpreg_match() 函式檢測移動裝置
用 PHP 檢測移動裝置

我們將介紹一些在 PHP 中檢測移動裝置的方法。

在 PHP 中使用 mobiledetect 類檢測移動裝置

我們可以使用名為 Mobile Detect 的輕量級 PHP 類來檢測 PHP 中的移動裝置。它還可以檢測平板裝置。該庫使用某些 HTTP 標頭和使用者代理字串來檢測移動裝置。我們可以使用 Composer 使用以下命令下載庫。

composer require mobiledetect/mobiledetectlib

該庫提供了各種方法,如 isMobile()isTablet()isIOS() 來檢測各種移動環境。我們可以建立 Mobile_Detect() 類的物件並使用這些方法。

例如,使用上面的 composer 命令下載專案目錄中的庫。接下來,使用 require_once 函式需要檔案 autoload.php。該檔案位於 vendor 目錄中。接下來,建立 Mobile_Detect() 類的物件 $detect。然後,在 if 條件下使用函式 isMobile()。在 if 塊中,顯示訊息檢測到移動裝置,並在 else 塊中顯示訊息未檢測到移動裝置

下面的示例將檢測網頁是否是從移動裝置訪問的。下面的輸出部分顯示了從 PC 開啟網頁時的情況。我們可以通過在網頁上單擊滑鼠右鍵找到響應式設計模式來檢查元素。在那裡,我們可以選擇不同的移動裝置並重新整理指令碼。當我們選擇移動裝置時,輸出將更改為檢測到移動裝置。這樣,我們就可以使用 Mobile Detect 類來檢測 PHP 中的移動裝置。

示例程式碼:

require_once "vendor/autoload.php";

$detect = new Mobile_Detect;

if ( $detect->isMobile() ) {
echo "Mobile device detected";
}
else {
echo "Mobile device not detected";
}
?>

輸出:

Mobile device not detected

在 PHP 中使用 HTTP_USER_AGENTpreg_match() 函式檢測移動裝置

我們可以使用字串 HTTP_USER_AGENT 來獲取有關使用者瀏覽器訪問網站的資訊。我們將使用 $_SERVER 超全域性變數和字串作為陣列元素。超全域性變數包含有關網路伺服器的資訊。我們將建立在移動裝置中找到的使用者代理字串的自定義集合。然後,我們可以使用 preg_match() 函式檢查這些是否與當前使用者正在瀏覽的瀏覽器匹配。隨著支援的新移動裝置的釋出,可以手動新增使用者代理字串的集合。可在此處找到更新的使用者代理字串集合列表。

例如,建立一個變數 $user_agent 並在其中儲存 $_SERVER["HTTP_USER_AGENT"]。然後使用 preg_match() 函式來匹配使用者代理字串。使用字串集合作為第一個引數。使用 $user_agent 變數作為第二個引數。最後,使用 if-else 條件相應地顯示訊息。

在這裡,我們從 iPhone 開啟了網頁。因此使用者代理字串匹配集合。這樣,我們就可以在 PHP 中檢測移動裝置了。

示例程式碼:

$user_agent = $_SERVER["HTTP_USER_AGENT"];
if(preg_match("/(android|webos|avantgo|iphone|ipod|ipad|bolt|boost|cricket|docomo|fone|hiptop|opera mini|mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i",$user_agent ))
{
echo "mobile device detected";
}
else{
echo "mobile device not detected";
}

輸出:

Mobile device detected
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn