PHPでは、クライアントブラウザバージョンの検出が一般的な要件です。特に、さまざまなブラウザバージョンに異なる機能やスタイルを必要とするWebアプリケーションの場合、バージョン制御は非常に重要です。クライアントのユーザーエージェント文字列を取得することで、これを達成できます。この記事では、Custom get_client_version関数を使用してクライアントブラウザーバージョンを検出し、バージョン情報に基づいて適切なコントロールを実行します。
クライアントがリクエストするたびに、ブラウザはブラウザタイプ、バージョン、オペレーティングシステム、その他の情報を含むユーザーエージェントという名前のHTTPヘッダーを送信します。 PHPは、この情報を取得するために$ _Server ['http_user_agent']を提供します。
まず、ブラウザのタイプとバージョンを抽出する関数を定義します。
function get_client_version() {
// 得る User-Agent 弦
$userAgent = $_SERVER['HTTP_USER_AGENT'];
// ブラウザバージョン
$browserVersion = '';
// さまざまなブラウザを検出します
if (preg_match('/MSIE (.*?);/', $userAgent, $matches)) {
$browserVersion = "Internet Explorer: " . $matches[1];
} elseif (preg_match('/Trident\/.*rv:(.*?)\)/', $userAgent, $matches)) {
$browserVersion = "Internet Explorer: " . $matches[1];
} elseif (preg_match('/Chrome\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Chrome: " . $matches[1];
} elseif (preg_match('/Firefox\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Firefox: " . $matches[1];
} elseif (preg_match('/Safari\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Safari: " . $matches[1];
} elseif (preg_match('/Edge\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Edge: " . $matches[1];
} else {
$browserVersion = "Unknown Browser";
}
return $browserVersion;
}
上記のコードでは、正規式を使用して、ユーザーエージェント文字列にブラウザのタイプとバージョンの情報を抽出します。さまざまなブラウザには異なる識別子があります。たとえば、Chromeのバージョン番号は通常Chrome/の背後にありますが、Internet ExplorerはMSIEまたはTridentを使用します。
ブラウザバージョン情報を抽出したら、バージョンに応じて異なる方法で制御できます。ブラウザの古いバージョンと互換性を互換性を備えているか、新しいバージョンのブラウザの高度な機能を有効にする必要があるとします。バージョン情報を使用してブランチコントロールを使用できます。
たとえば、Chromeバージョンを確認して、バージョンに応じてさまざまな機能を提供できます。
function version_control() {
$browserVersion = get_client_version();
// 得るブラウザ名称和バージョン号
preg_match('/([a-zA-Z]+): (\d+\.\d+)/', $browserVersion, $matches);
$browserName = $matches[1] ?? 'Unknown';
$version = $matches[2] ?? '0';
// 右 Chrome バージョン制御を実行します
if ($browserName == 'Chrome') {
if (floatval($version) < 90) {
echo "あなたの Chrome ブラウザバージョン过低,请升级以得る更好的体验。";
} else {
echo "あなたの Chrome ブラウザバージョン支持最新功能!";
}
} elseif ($browserName == 'Firefox') {
// 右 Firefox 同様のバージョンコントロールを実行します
if (floatval($version) < 80) {
echo "あなたの Firefox ブラウザバージョン过低,请升级以得る更好的体验。";
} else {
echo "あなたの Firefox ブラウザバージョン支持最新功能!";
}
} else {
echo "使用していることを検出しました $browserName ブラウザ,バージョン: $version。";
}
}
このversion_control関数では、最初にget_client_versionを呼び出して、ブラウザーバージョン情報を取得します。次に、ブラウザの名前とバージョンに基づいて異なる論理処理を実行します。たとえば、Chromeのバージョンが90未満の場合、ユーザーはブラウザのアップグレードを思い出させます。
前のコードを組み合わせることで、PHPページで使用できる完全な例があります。
<?php
function get_client_version() {
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$browserVersion = '';
if (preg_match('/MSIE (.*?);/', $userAgent, $matches)) {
$browserVersion = "Internet Explorer: " . $matches[1];
} elseif (preg_match('/Trident\/.*rv:(.*?)\)/', $userAgent, $matches)) {
$browserVersion = "Internet Explorer: " . $matches[1];
} elseif (preg_match('/Chrome\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Chrome: " . $matches[1];
} elseif (preg_match('/Firefox\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Firefox: " . $matches[1];
} elseif (preg_match('/Safari\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Safari: " . $matches[1];
} elseif (preg_match('/Edge\/(.*?) /', $userAgent, $matches)) {
$browserVersion = "Edge: " . $matches[1];
} else {
$browserVersion = "Unknown Browser";
}
return $browserVersion;
}
function version_control() {
$browserVersion = get_client_version();
preg_match('/([a-zA-Z]+): (\d+\.\d+)/', $browserVersion, $matches);
$browserName = $matches[1] ?? 'Unknown';
$version = $matches[2] ?? '0';
if ($browserName == 'Chrome') {
if (floatval($version) < 90) {
echo "あなたの Chrome ブラウザバージョン过低,请升级以得る更好的体验。";
} else {
echo "あなたの Chrome ブラウザバージョン支持最新功能!";
}
} elseif ($browserName == 'Firefox') {
if (floatval($version) < 80) {
echo "あなたの Firefox ブラウザバージョン过低,请升级以得る更好的体验。";
} else {
echo "あなたの Firefox ブラウザバージョン支持最新功能!";
}
} else {
echo "使用していることを検出しました $browserName ブラウザ,バージョン: $version。";
}
}
// 调用バージョン控制
version_control();
?>
上記のコードは、さまざまなブラウザーバージョンに基づいて、さまざまなユーザーエクスペリエンスまたはリマインダーを提供するのに役立ちます。さらに、ブラウザサポートの追加や特定のバージョンで特定のフロントエンド機能を有効にするなど、ニーズに応じてさらに拡張できます。