【问题标题】:Combine css selectors with the same properties, php将具有相同属性的 css 选择器组合在一起,php
【发布时间】:2016-06-28 07:15:07
【问题描述】:

我正在寻找一个能够将 CSS 选择器与相同属性结合起来的 PHP 库(脚本)。这就是我的意思:

.myclass{
    font-size: 14px;
    color: red;
}
.something{
    font-size: 14px;
    color: red;
}

上面的 CSS 处理后的结果应该是:

.myclass, .something{
    font-size: 14px;
    color: red;
}

感谢任何帮助。

【问题讨论】:

  • 有一个很好的 php 解析器 github.com/sabberworm/PHP-CSS-Parser 。通过一些研究你可以做到这一点。
  • .something 属性是否总是等于 .myclass 或者它们可以不同,如果它们可以不同,应该覆盖哪一个?
  • 您的 CSS 是否在单独的文件中?
  • @maytham-ɯɐɥʇʎɐɯ ,这里的想法是结合所有具有相同属性的选择器。如果他们有不同的道具。那么应该保持原样。
  • @maytham-ɯɐɥʇʎɐɯ , “你的 CSS 在单独的文件中吗?” - 在 php 中将其作为字符串。

标签: php css parsing minify


【解决方案1】:

一个不错的 php 库是 https://github.com/Cerdic/CSSTidy

示例代码:

<?php
include('class.csstidy.php');

$css_code = '
.myclass{
    font-size: 14px;
    color: red;
}
.something{
    font-size: 14px;
    color: red;
}
';

$css = new csstidy();

$css->$css->set_cfg('merge_selectors', 2);

$css->parse($css_code);

echo $css->print->formatted();
?>

输出:

.myclass,.something {
  font-size:14px; color:red
}

【讨论】:

  • 谢谢。您提供的代码不是诀窍,但我已经编辑了您的答案,现在它可以按预期工作。一旦我的编辑获得批准,我将接受答案并将赏金代表点应用于您。干杯。
  • 您好,很遗憾,您的编辑已被三位不同的审阅者拒绝(此编辑偏离了帖子的初衷。即使是必须进行重大更改的编辑也应努力保持帖子所有者的目标。 ),我同意拒绝的理由。使代码工作的主要变化是什么? 2 而不是TRUE 作为set_cfg 中的参数?这样我就可以正确编辑我的答案。
  • 我刚刚改进了评论。他们为什么会拒绝它?那一个是正确的,并且与您的相似。无论如何,替换这一行$css-&gt;set_cfg('merge_selectors', 2);(而不是remove_last_;)。
  • 完成,我还更新了库链接,删除了旧链接。
  • 如何在那里设置逻辑,例如我想获取所有红色的选择器。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多