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 脚本检查响应能力,因为它是客户端程序。
有两种可能的*方法可以做到这一点:
您可以使用 JavaScript 检测您的 CSS 中是否有任何媒体查询,然后使用 true/false 变量发送到 PHP Ajax
甚至可以使用服务器端语言读取 CSS 文件并使用 RegEx 搜索文件中的任何媒体查询。
这些方法不能保证有效,而且确实没有 "standard"、"safe" 或 "non-hackey" 方法可以做到这一点,您也 不能 使用服务器端技术直接处理媒体查询。
可用于匹配 @media
规则的正则表达式是:
^\@media\s(.*?)\{$
^ = 断言字符串开头的位置
\@ = 按字面意思匹配字符 @
media = 按字面意思匹配字符 media
\s = 匹配任何白色 space 字符 [\r\n\t\f ]
.*? = 匹配任何字符(换行符除外)
{ = 匹配字符 { literally
$ = 断言字符串末尾的位置
\@media\s(.*?)\{
\@ = 按字面意思匹配字符@
media = 按字面意思匹配字符 media
\s = 匹配任何白色 space 字符 [\r\n\t\f ]
.*? = 匹配任何字符(换行符除外)
{ = 匹配字符 { literally
您还可以使用 i
使正则表达式不区分大小写(i
仅忽略 [a-zA-Z] 的大小写)
以下是使用 RegEx 检测 @media
规则的四种可能方法:
/^\@media\s(.*?)\{$/
/^\@media\s(.*?)\{$/i
/\@media\s(.*?)\{/
/\@media\s(.*?)\{/i
没有!特别是 PHP。
您可以尝试解析 CSS 进行媒体查询,或检查元素大小是否设置为绝对值。
在我看来,要走的路是拥有一些网络引擎 运行 服务器端,并强制它呈现具有不同 window.width 的页面,并检查文档宽度是否会随之改变。此类模块可以从 php 执行,但不能在 php 执行。 - 如果您没有专用服务器,请忘记尝试这种绝技。
是否有 class/script/possibility 来检查网站的响应式设计?可能是这样的:
if (is_responsive('http://www.site.tld')) {
echo 'is responsive';
}
else {
echo 'is not responsive';
}
有什么想法吗?
没有常规或完美的功能可以做到这一点。要以编程方式进行检查,您可以解析媒体查询的样式表。
明确地说,不推荐使用它,因为媒体查询可以用于很多事情。
如果您想尝试一下,这可能对您有所帮助:@media ?[^{]+?{
。
从技术上讲,您不能使用 PHP 脚本检查响应能力,因为它是客户端程序。
有两种可能的*方法可以做到这一点:
您可以使用 JavaScript 检测您的 CSS 中是否有任何媒体查询,然后使用 true/false 变量发送到 PHP Ajax
甚至可以使用服务器端语言读取 CSS 文件并使用 RegEx 搜索文件中的任何媒体查询。
这些方法不能保证有效,而且确实没有 "standard"、"safe" 或 "non-hackey" 方法可以做到这一点,您也 不能 使用服务器端技术直接处理媒体查询。
可用于匹配 @media
规则的正则表达式是:
^\@media\s(.*?)\{$
^ = 断言字符串开头的位置
\@ = 按字面意思匹配字符 @
media = 按字面意思匹配字符 media
\s = 匹配任何白色 space 字符 [\r\n\t\f ]
.*? = 匹配任何字符(换行符除外)
{ = 匹配字符 { literally
$ = 断言字符串末尾的位置\@media\s(.*?)\{
\@ = 按字面意思匹配字符@
media = 按字面意思匹配字符 media
\s = 匹配任何白色 space 字符 [\r\n\t\f ]
.*? = 匹配任何字符(换行符除外)
{ = 匹配字符 { literally
您还可以使用 i
使正则表达式不区分大小写(i
仅忽略 [a-zA-Z] 的大小写)
以下是使用 RegEx 检测 @media
规则的四种可能方法:
/^\@media\s(.*?)\{$/
/^\@media\s(.*?)\{$/i
/\@media\s(.*?)\{/
/\@media\s(.*?)\{/i
没有!特别是 PHP。 您可以尝试解析 CSS 进行媒体查询,或检查元素大小是否设置为绝对值。
在我看来,要走的路是拥有一些网络引擎 运行 服务器端,并强制它呈现具有不同 window.width 的页面,并检查文档宽度是否会随之改变。此类模块可以从 php 执行,但不能在 php 执行。 - 如果您没有专用服务器,请忘记尝试这种绝技。