gpt4 book ai didi

php - 我想使用 php 在 css 中的每个元素中添加我的类名

转载 作者:行者123 更新时间:2023-12-04 18:03:30 29 4
gpt4 key购买 nike

我想创建 css 解析类型..

Parse 会将我的类名添加到 CSS 中的每个元素。

例如我有以下 CSS

.class1 {font-size:10px}
.class2 {font-style:italic}
body {height:100%}
html {width:100%}

在我的解析器之后它会像这样。

.myclass .class1 {font-size:10px}
.myclass .class2 {font-style:italic}
.myclass body {height:100%}
.myclass html {width:100%}

我已经创建了一个函数,但是当@media 查询在带有嵌套元素的 CSS 中出现时它不起作用。

谁能给我提供好的 CSS 解析器/解决方案。我已经尝试过可用的 CSS 解析器。对于我的解决方案,这些还不够好。

最佳答案

为此,我推荐 Sabberworm 的 PHP-CSS-Parser .我自己用过它,它是一个很棒的工具。您可以通过 Composer 安装它通过将下面的代码添加到您的 composer.json

{
"require": {
"sabberworm/php-css-parser": "*"
}
}

安装后,非常简单。您可以从包含字符串中的 css 的变量中传递 CSS 代码,也可以从特定目录中读取文件。在我的示例中,我将从目录中读取它。

$oCssParser = new Sabberworm\CSS\Parser(file_get_contents('style.css'));
$oCssDocument = $oCssParser->parse();

现在您可以开始了。在这个解析器的 Github 上,他们实际上有一个如何为所有选择器添加一个 id 的例子。我将通过类(class)向您展示如何做到这一点。

$myClass = ".myclass";
foreach($oCssDocument->getAllDeclarationBlocks() as $oBlock) {
foreach($oBlock->getSelectors() as $oSelector) {
$oSelector->setSelector($myClass.' '.$oSelector->getSelector());
}
}

现在您已经预习了类(class)。现在您想退回最终产品,是吗?这可以通过使用内置函数 render() 轻松完成。像这样

$oFormat = Sabberworm\CSS\OutputFormat::create()->indentWithSpaces(4)->setSpaceBetweenRules("\n");
print $oCssDocument->render($oFormat);

当然,如果您想将其输出到文件中,也可以使用 file_put_contents() 来实现。

希望这对您有所帮助。

关于php - 我想使用 php 在 css 中的每个元素中添加我的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31178308/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com