2016-07-14 8 views
0

2つの異なるバリエーションのマイウェブサイトを実行しようとしています.1つはデスクトップ用、もう1つはモバイル用です。私はこれを(PHPを使用して)このように動作させることにしました.Windows、Mac、またはその他のデスクトップOSの場合、このHTMLを実行します。 Android、iOSなどでHTMLを実行している場合WindowsやAndroidから自分のウェブサイトにアクセスすると、対応するOSのHTMLが実行されます。私はiPhoneやMacBook、両方のiPhoneとMac用のコードを私のウェブサイトに行くときでも関係なく、ユーザーがiPhoneやMacBook上にある場合の、実行されます。実行するかどうかをPHPに伝える方法

<!--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に行くありがとう!

答えて

0

また、javascriptを使用することもできます。

/* Check if mobile */ 

var isMobile = { 
    Android: function() { 
     return navigator.userAgent.match(/Android/i); 
    }, 
    BlackBerry: function() { 
     return navigator.userAgent.match(/BlackBerry/i); 
    }, 
    iOS: function() { 
     return navigator.userAgent.match(/iPhone|iPad|iPod/i); 
    }, 
    Opera: function() { 
     return navigator.userAgent.match(/Opera Mini/i); 
    }, 
    Windows: function() { 
     return navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i); 
    }, 
    any: function() { 
     return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); 
    } 
}; 

if(isMobile.any()) 
{ 
//this is mobile 
} 
+0

OS Xデバイスをチェックする節はありません。 OPは、一般的なモバイルプラットフォームではなく、iOSとOSXを区別したいと考えています。 – NSNoob

4

以下のスクリプトは、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スクリプトでそれを行うことができます。

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のフィドルhereを見ることができます。

+0

私はこの正確なコード(および別のバリエーション)をテストしたとき、私はiPhone(私が欲しかった)にも当てはまりましたが、Macでも当てはまりました。これが私に上記の質問をさせた問題です。私はこれがユーザーエージェントの文字列と関係があると思いますが、まだ問題が残っています。 –

+0

@Izakthecoder。メソッドを更新しました。今すぐやってみて下さい。 – NSNoob

+0

また、これはユーザーエージェントの文字列が原因です。 iphoneの場合、文字列には「正規表現と文字列の比較が失敗して両方に当てはまる」ため、「Mac OS Xのように」もあります。キーワードがiOSとMacintoshの場合は、ユニークなので動作しますが – NSNoob

0

これはいい考えではないと思いますが、レスポンシブデザインを使用しないでください。ブートストラップのファンデーション(http://foundation.zurb.com/)(http://getbootstrap.com/)。または、自分で何かを作る(http://www.w3schools.com/html/html_responsive.asp

レスポンシブとは基本的に、サイトが訪問者が使用している画面の形式(電話、タブレット、ラップトップ、大型デスクトップ)に合わせて縮尺を変えることを意味します。このようにして、あなたのサイトはあらゆる創造のためにサイトを作るのではなく、すべてのものに取り組んでいます。

+0

これは応答性の高いデザインを使用していますが、モバイルとデスクトップのナビゲーションメニューも異なります。 Bamfacts.tkに移動し、F12 Chrome Devを使用します。私が何を意味するかを見るオプション。 –

+0

それはそれを説明します。通常は2つのメニューといくつかのCSS(hide-mobile、show-mobile)を使用します –

関連する問題