Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:检查网站的响应性设计_Php_Responsive Design_Detection - Fatal编程技术网

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

PHP:检查网站的响应性设计,php,responsive-design,detection,Php,Responsive Design,Detection,是否有课程/脚本/可能检查网站的响应性设计?可能是这样的: if (is_responsive('http://www.site.tld')) { echo 'is responsive'; } else { echo 'is not responsive'; } 有什么想法吗?没有常规或完美的功能来完成这项工作。为了以编程方式进行检查,您可以解析媒体查询的样式表 所以说得清楚一点,不推荐使用它,因为媒体查询可以用于很多事情 如果您想尝试它,这可能会对您有所帮助:@media?[^

是否有课程/脚本/可能检查网站的响应性设计?可能是这样的:

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

有什么想法吗?

没有常规或完美的功能来完成这项工作。为了以编程方式进行检查,您可以解析媒体查询的样式表

所以说得清楚一点,不推荐使用它,因为媒体查询可以用于很多事情


如果您想尝试它,这可能会对您有所帮助:
@media?[^{]+?{
不,从技术上讲,您不能使用PHP脚本检查响应性,因为这是客户端的事情。

有两种可能的*方法:

  • 您可以使用JavaScript检测CSS中是否存在任何媒体查询,然后使用Ajax向PHP发送真/假变量

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

  • 这些方法不能保证有效,而且确实没有“标准”、“安全”或“非黑客”的方法,而且也不能使用服务器端技术直接处理媒体查询

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

  • ^\@media\s(.*)\{$

    ^=在字符串开头断言位置
    \@=匹配字符@字面上
    media=与media字面上的字符匹配
    \s=匹配任何空白字符[\r\n\t\f]
    .*=匹配任何字符(换行符除外)
    {=匹配字符{字面上
    $=在字符串末尾断言位置

  • \@media\s(.*)\{

    \@=匹配字符@字面上
    media=与media字面上的字符匹配
    \s=匹配任何空白字符[\r\n\t\f]
    .*=匹配任何字符(换行符除外)
    {=匹配字符{字面上

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

    以下是使用正则表达式检测
    @media
    规则的四种可能方法:

  • /^\@media\s(.*)\{$/
  • /^\@media\s(.*)\{$/i
  • /\@media\s(.*)\{/
  • /\@media\s(.*)\{/i
  • 不!尤其是在PHP中。 您可以尝试解析媒体查询的CSS,或者检查元素大小是否设置为绝对值


    在我看来,应该让一些web引擎运行服务器端,强制它以不同的window.width呈现页面,并检查文档宽度是否会随之改变。这样的模块可以从php执行,但不能在php中完成。-如果您没有专用服务器,请忘了尝试这些特技。

    也许您可以扫描他们的sty
    @media
    选择器的lesheets一种方法是获取CSS并检查其中是否有媒体查询。但是,媒体查询可以用于很多事情,你必须解析它们并找出它们是否真的响应不同的屏幕大小。不,因为“响应性”是客户端的事情,而用于实现“响应性”的es不仅仅用于向网站添加“响应性”。网站响应性不一定需要媒体查询。我认为更好的答案应该是“不,这是不可能的”。这并不能保证网站是有响应的。想象一下,其中甚至有50个或更多的媒体查询,但都是空的。当然,你的两个都在那里,但如果他想这样做,这可能会对他有所帮助……你应该发出警告,如“媒体查询的存在并不意味着网站是有响应的”无论如何,我编辑了我的anwser。但这并不意味着我完全同意这是不可能的。有很多空闲时间的人可以编写一个函数,它不仅仅是检查媒体查询是否存在。你可以分析行并观察查询的单词/值。尽管如此,用户可以对单个项目使用媒体查询,但是“至少你不知道他们为小屏幕做了些什么。这是偶然发现的。虽然你的答案很老,但我很好奇……拥有一台专用服务器与此有什么关系?”克雷格把检查响应性的问题放在一边(在CSS中解析\@media是一个很好的指标,但不是最终的答案,因为html中仍然可以嵌入样式,并且对象的属性也可以从javascript更改)。为了确保您必须以不同的窗口大小呈现页面(包括运行js)(mabe还欺骗用户代理)并检查宽度是否正确更改。这不能在普通php中完成。这远远超出了共享主机服务的限制。任何低于虚拟机的内容都是不可行的,因为它占用了大量资源。