2016-04-07 8 views
0

クラス/スクリプト/レスポンシブデザインのウェブサイトをチェックする可能性はありますか?これは次のようなものです:PHP:レスポンシブデザインのウェブサイトをチェック

if (is_responsive('http://www.site.tld')) { 
    echo 'is responsive'; 
} 
else { 
    echo 'is not responsive'; 
} 

どのようなアイデアですか?

+3

おそらく、あなたのスタイルシートを '@media'セレクタのためにスキャンすることができます – Jer

+1

CSSを取得し、そこにメディアクエリがあるかどうかを調べることが1つの方法です。しかし、やはり、メディアクエリーは多くのものに使用できます。それらを解析し、実際に異なる画面サイズに応答するかどうかを調べる必要があります。 – Eihwaz

+0

いいえ、「レスポンシブ・ネネス」はクライアント側のものであり、「レスポンシブ・ネース」を実装するために使用される技術は、ウェブサイトに「レスポンシブ・ネネス」を追加するためだけに使用されるものではありません。 –

答えて

7

これを行う2つの可能*の方法があります。

  1. あなたのCSS内の任意のメディアクエリがある場合は、その後、アヤックス

  2. 使用してPHPに真/偽の変数を送る検出するために、JavaScriptを使用することができ

  3. サーバー側の言語を使用してCSSファイルを読み込み、RegExを使用してファイル内のメディアクエリを検索することさえできます。

これらのメソッドは動作が保証と直接にすることができことはできません使用サーバー側の技術も、実際にこれを行うのない「標準」、「安全」か「非hackey」方法はありませんされていませんメディアクエリを処理します。

あなたが@mediaルールに一致するために使用できる正規表現のは、以下のとおりです。

  1. ^\@media\s(.*?)\{$

    ^= @ = \文字列
    の開始時に位置を主張するには、=文字通り
    メディア@文字にマッチします文字通り文字のメディアに一致します
    \ s =空白文字[\ r \ n \ t \ f]
    *に一致します。 =(改行を除く)任意の文字を{=文字{文字通り
    $は= @ = \文字列

  2. \@media\s(.*?)\{

    の終わりに位置を主張一致
    一致した文字通り
    メディア@文字にマッチします=文字通り文字のメディアに一致します
    \ s =空白文字[\ r \ n \ t \ f]に一致します
    *?=
    {=は文字{文字通り

また、あなたが正規表現の場合は、小文字を区別しないにするためにiを使用することができます(iのみ[-ZA-Zの大文字と小文字を無視すると一致する(改行を除く)任意の文字に一致します

  1. /^\@media\s(.*?)\{$/
  2. :])

    ここで正規表現を使用して、@mediaルールを検出する4つの可能な方法があります

  3. /^\@media\s(.*?)\{$/i
  4. /\@media\s(.*?)\{/
  5. /\@media\s(.*?)\{/i
1

これを行うための定期的または完全な機能はありません。プログラムでチェックするために、メディアクエリのスタイルシートを解析できます。

明らかにするには、ではなく、を使用することをおすすめします。メディアクエリは多くのことに使用できます。

とにかく試してみたい方は、@media ?[^{]+?{にお役立てください。

+1

サイトが応答するためのメディアクエリーは必ずしも必要ではありません。私はもっ​​と良い答えは単純に "いいえ、これはできません"と思う。 – Turnip

+0

これはウェブサイトが応答性であることを保証するものではありません。その中に50以上のメディアクエリがあると想像してください。 –

+0

確かにあなたの両方が正しいとは思うが、とにかくやっていると感じたら、助けてくれるかもしれない... – Boratzan

1

技術的には、PHPスクリプトを使用してクライアント側の問題として応答性をチェックすることはできません。

0

ありません!特にPHPで。 メディアクエリーのためにCSSを解析したり、要素サイズが絶対値で設定されているかどうかを調べたりできます。

私の意見では、サーバー側を実行しているWebエンジンをいくつか持っていて、別のwindow.widthでページをレンダリングし、文書の幅が変更されるかどうかを確認します。このようなモジュールはphpから実行できますが、phpでは実行できません。 - 専用サーバーを持っていない場合は、そのようなスタントを忘れることを忘れないでください。

+0

ちょうどこれが起こりました。あなたの答えは古いものの、私は不思議です...専用のサーバを持っていればどうしたらいいですか? – CRAIG

+1

@CRAIGは、応答性をチェックすることを全面に置いています(CSSの\ @mediaの解析は良い指標ですが、HTMLに埋め込まれたスタイルやjavascriptから変更されたオブジェクトのプロパティが存在する可能性があるため)。異なるウィンドウサイズ(ユーザーエージェントを偽装している)でページをレンダリング(js実行中も含む)して、幅が正しく変更されているかどうかを確認する必要があります。そして、それはバニラのPHPで行うことはできません。また、共有ホスティングサービスによって課される制限をはるかに超えています。少なくとも仮想マシン以上のものは無駄です+それはリソース重いので、専用です。 – StormRideR

関連する問題