PHP: 检查网站的响应式设计

PHP: Check website for responsive design

是否有 class/script/possibility 来检查网站的响应式设计?可能是这样的:

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

有什么想法吗?

没有常规或完美的功能可以做到这一点。要以编程方式进行检查,您可以解析媒体查询的样式表。

明确地说,推荐使用它,因为媒体查询可以用于很多事情。

如果您想尝试一下,这可能对您有所帮助:@media ?[^{]+?{

从技术上讲,您不能使用 PHP 脚本检查响应能力,因为它是客户端程序。

有两种可能的*方法可以做到这一点:

  1. 您可以使用 JavaScript 检测您的 CSS 中是否有任何媒体查询,然后使用 true/false 变量发送到 PHP Ajax

  2. 甚至可以使用服务器端语言读取 CSS 文件并使用 RegEx 搜索文件中的任何媒体查询。

这些方法不能保证有效,而且确实没有 "standard"、"safe" 或 "non-hackey" 方法可以做到这一点,您也 不能 使用服务器端技术直接处理媒体查询。

可用于匹配 @media 规则的正则表达式是:

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

    ^ = 断言字符串开头的位置
    \@ = 按字面意思匹配字符 @
    media = 按字面意思匹配字符 media
    \s = 匹配任何白色 space 字符 [\r\n\t\f ]
    .*? = 匹配任何字符(换行符除外)
    { = 匹配字符 { literally
    $ = 断言字符串末尾的位置

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

    \@ = 按字面意思匹配字符@
    media = 按字面意思匹配字符 media
    \s = 匹配任何白色 space 字符 [\r\n\t\f ]
    .*? = 匹配任何字符(换行符除外)
    { = 匹配字符 { literally

您还可以使用 i 使正则表达式不区分大小写(i 仅忽略 [a-zA-Z] 的大小写)

以下是使用 RegEx 检测 @media 规则的四种可能方法:

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

没有!特别是 PHP。 您可以尝试解析 CSS 进行媒体查询,或检查元素大小是否设置为绝对值。

在我看来,要走的路是拥有一些网络引擎 运行 服务器端,并强制它呈现具有不同 window.width 的页面,并检查文档宽度是否会随之改变。此类模块可以从 php 执行,但不能在 php 执行。 - 如果您没有专用服务器,请忘记尝试这种绝技。