使用PHP如何找到CSS标记/id/class并替换花括号中的样式?

使用PHP如何找到CSS标记/id/class并替换花括号中的样式?,php,css,regex,preg-match,Php,Css,Regex,Preg Match,我需要遍历CSS文件,找到特定的项目,并将它们的CSS更改为主题编辑器的更新内容。在花括号之间有一个包含所有CSS的变量,我只需要找到一种方法来选择给定标记后面的大括号并替换内容。任何帮助都将不胜感激!谢谢也许不是唯一的解决方案,但是您是否考虑过将CSS放入数据库并动态生成CSS文件 将其存储在数据库中还可以让您在每次发生更改时重新生成文件,并将其进行缓存以节省性能 要修改现有文件,您可能需要遍历该文件,并希望没有人手动更改CSS文件的样式约定,并通过记住最后一个这样的标记/类/id表达式来进行

我需要遍历CSS文件,找到特定的项目,并将它们的CSS更改为主题编辑器的更新内容。在花括号之间有一个包含所有CSS的变量,我只需要找到一种方法来选择给定标记后面的大括号并替换内容。任何帮助都将不胜感激!谢谢

也许不是唯一的解决方案,但是您是否考虑过将CSS放入数据库并动态生成CSS文件

将其存储在数据库中还可以让您在每次发生更改时重新生成文件,并将其进行缓存以节省性能

要修改现有文件,您可能需要遍历该文件,并希望没有人手动更改CSS文件的样式约定,并通过记住最后一个这样的标记/类/id表达式来进行替换(可能无法立即使用!):


您好,谢谢您的评论,很遗憾,我不允许更改当前的css系统。我必须保留现有的css文件并对其进行编辑。显然,您需要遍历该文件,逐行读取它,然后搜索您要查找的标记/id/class。然后搜索要更改的样式信息,并替换所需的样式信息。每当出现
}
时,标记/id/class就会结束。您知道如何逐行进行,然后在括号之间进行替换吗?添加了一些代码段,这应该会告诉您一种方法。但是,根据CSS文件的复杂性和样式指南,您需要进行调整。为什么不在文件底部添加新的CSS定义呢?我相信您可以覆盖现有的定义。
$newFileContent = "";
$searchClass = "td.content";
$lines = file("style.css");
$insideSearchedTag = false;
foreach($lines as $line) {
  if (strstr($line, $searchClass) !== false) {
    $insideSearchedTag = true;
    $newFileContent .= "\n" . $line;
  }
  else if (strstr($line, "}") !== false) {
    $insideSearchedTag = false;
    $newFileContent .= "\n" . $line;
  }
  else if ($insideSearchedTag) {
    // search/replace the content you want to replace.
    $newLineContent = str_ireplace($searchStyle, $replaceStyle, $line);
    $newFileContent .= "\n" . $newLineContent;
  }
  else { $newFileContent .= "\n" . $line; }
}
fwrite($file, $newFileContent);