我想打开一个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 ...}之间的部分。
如何找到旧样式或将其替换为新样式?
希望有人可以向我展示执行这些步骤的简单方法!?
非常感谢。
答案 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文件中包含您正在搜索的类的许多块,则它可能无法按预期工作,并且您可能适应正则表达式模式。