小编典典

用PHP解析CSS文件

css

我想用一种特殊的方式解析一个CSS文件。

例:

cssfile.css

#stuff {
    background-color: red;
}

#content.postclass-subcontent {
    background-color: red;
}

#content2.postclass-subcontent2 {
    background-color: red;
}

我希望PHP返回给我每个名称中包含postclass的类名。

在此示例中,结果看起来像一个数组:

arrayentry1:
#content.postclass-subcontent
arrayentry2:
#content2.postclass-subcontent2

但是我在正则表达式方面更糟。以某种方式搜索“ postclass”,然后抓取孔线并放入数组中。


谢谢,我用它来解析类似confic文件的css文件。

$(function () {
    $.get('main.css', function (data) {
        data = data.match(/(#[a-z0-9]*?\ .?postclass.*?)\s?\{/g);
        if (data) {
            $.each(data, function (index, value) {
                value = value.substring(0, value.length - 2);
                $(value.split(' .')[0]).wrapInner('<div class="' + value.split('.')[1] + '" />');
            });
        }
    });
});

是我的最终代码。这样我就可以在不编辑布局的情况下轻松地将div包裹在一些hardcode-html上。所以我只需要编辑我的cssfile并在其中添加类似

id .postclass-class

我的代码搜索id并用div包裹内部内容。当我只需要在某个东西周围添加一个div以获得清晰或背景时,我就需要快速修复。


阅读 475

收藏
2020-05-16

共1个答案

小编典典

这是一个使用正则表达式的快速而肮脏的独立黑客:

$input = '
#stuff {
    background-color: red;
}

#content.postclass-subcontent {
    background-color: red;
}

#content2.postclass-subcontent2 {
    background-color: red;
}
';

$cssClassName = 'postclass';
preg_match_all('/(#[a-z0-9]*?\.?'.addcslashes($cssClassName, '-').'.*?)\s?\{/', $input, $matches);
var_dump($matches[1]);

结果是:

array(2) {
  [0]=>
  string(29) "#content.postclass-subcontent"
  [1]=>
  string(31) "#content2.postclass-subcontent2"
}
2020-05-16