在php中搜索并替换css文件中的匹配类

时间:2019-03-08 10:47:44

标签: php

我想打开一个css文件,搜索一个已知的类名并用新样式覆盖旧部分

我有一个数组,其中包含类的名称和新样式

$newstyle['myclassname'][0]='color:red';
$newstyle['myclassname'][1]='another style';
$newstyle['myclassname'][2]='another style';
...

所以我以此来创建新样式

$change=implode(';',$newstyle['myclassname']);

我在Codeigniter项目上工作,所以我开始打开文件

$fp = fopen($path.'myfile.css','wb');

现在我有一个想法,我该怎么做,但我不知道最简单的方法。

打开文件后,我必须搜索“ .myclassname”或“ #myclassname” 之后,我必须用必须从数组中创建的新样式删除或替换{... old styles ...}之间的部分。

如何找到旧样式或将其替换为新样式?

希望有人可以向我展示执行这些步骤的简单方法!?

非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式模式在文件中找到您的类,然后执行preg_replace()来替换您的类CSS:

$css = '.myClass { color:blue; background-color:red; }';
$class = 'myClass';
$classCss = 'color:red;';

$newCss = preg_replace('/(.*(?:\.|#)' . $class . '.*){.*}/s', '$1 { ' . $classCss . ' }', $css);

由于我们真的不知道您的CSS是什么样子,因此上面的代码是一个简单的示例,因此,如果您的CSS文件中包含您正在搜索的类的许多块,则它可能无法按预期工作,并且您可能适应正则表达式模式。