使用PHP更改CSS文件中的样式

使用PHP更改CSS文件中的样式,php,css,Php,Css,这就是我的问题:我正在为网站管理员制作一个CSS编辑器,但只针对某些样式。我需要的是一种在CSS文件(样式的标题)中查找单词或短语的方法,然后更改其内容。换句话说,如果我有这个代码: .test_style { font-size:12px; color:#ffffff; } 管理员选择样式 测试风格 并写道: font-size:16px; color:#000000; font-weight:bold; margin-top:5px; PHP脚本应找到相应的样式,并将内容更改为: .te

这就是我的问题:我正在为网站管理员制作一个CSS编辑器,但只针对某些样式。我需要的是一种在CSS文件(样式的标题)中查找单词或短语的方法,然后更改其内容。换句话说,如果我有这个代码:

.test_style {
font-size:12px;
color:#ffffff;
}
管理员选择样式

测试风格

并写道:

font-size:16px;
color:#000000;
font-weight:bold;
margin-top:5px;
PHP脚本应找到相应的样式,并将内容更改为:

.test_style {
font-size:16px;
color:#000000;
font-weight:bold;
margin-top:5px;
}
有人知道我该怎么做吗


编辑:我的想法是让管理员从下拉菜单中选择一个选择器,将代码写入文本区域,然后将他们写入该特定样式的代码保存到CSS文件中。

如果您相信他们实际上会编写CSS,为什么不将他们可以编辑的样式拉到另一个文件中,并将其导入邮件CSS文件。这样,他们就不会看到所有令人困惑的部分,你也不必担心每次他们进行更改时都会处理文件。

如果你相信他们会编写CSS,为什么不直接将他们可以编辑的样式拉到另一个文件中,并将其导入邮件CSS文件中呢。这样他们就看不到所有令人困惑的部分,你也不必担心每次他们做出更改时都会处理文件。

@Hawili有一个很好的答案,但你也可以将单独的规则存储在其他地方(平面文件、couchDB存储等)。这里的问题是界面:您希望他们能够添加自己的选择器吗?您希望他们从已经存在的选择器列表中进行选择吗?如果他们正在选择,为什么不让他们也从公共声明列表中选择,或者以参数化方式修改它们


你应该问的真正问题不仅仅是如何实现这个解决方案,而是你应该分析问题,看看这个解决方案是否正确。如果确实如此,您还可以使用正则表达式匹配来查找选择器后面的任何代码,并使用用户的输入修改这些代码。但我建议您以其他更容易修改的方式存储离散数据点,然后将输出保存到css文件。

@Hawili有一个很好的答案,但您也可以将单个规则存储在其他地方(平面文件、couchDB存储等)。这里的问题是界面:您希望他们能够添加自己的选择器吗?您希望他们从已经存在的选择器列表中进行选择吗?如果他们正在选择,为什么不让他们也从公共声明列表中选择,或者以参数化方式修改它们


你应该问的真正问题不仅仅是如何实现这个解决方案,而是你应该分析问题,看看这个解决方案是否正确。如果确实如此,您还可以使用正则表达式匹配来查找选择器后面的任何代码,并使用用户的输入修改这些代码。但我建议您以其他更易于修改的方式存储离散数据点,然后将输出保存到css文件中。

您可以在本网站上使用相同的想法:

我从以下位置复制了链接:


您所要做的就是使用db将实际css内容存储在文本字段中

您可以在此网站上使用相同的想法:

我从以下位置复制了链接:


您所要做的就是使用db将实际css内容存储在文本字段中

您可以使用数据库来实现这一点。使用表在mysql中创建一个数据库。为选择器创建一列,为样式设置另一列,使表格看起来像

---------------------------------
| selector   | style            |
---------------------------------
|.test_style | font-size:12px;  |
|            | color:#ffffff;   |
---------------------------------

您可以
echo
将此数据显示到php文件中。当管理员更改样式时,您可以更新样式字段,将
.test\u style
作为键。您可以尝试使用jQuery+AJAX发送和接收数据,避免重新加载表单或页面。

您可以使用数据库来完成此操作。使用表在mysql中创建一个数据库。为选择器创建一列,为样式设置另一列,使表格看起来像

---------------------------------
| selector   | style            |
---------------------------------
|.test_style | font-size:12px;  |
|            | color:#ffffff;   |
---------------------------------

您可以
echo
将此数据显示到php文件中。当管理员更改样式时,您可以更新样式字段,将
.test\u style
作为键。您可以尝试使用jQuery+AJAX发送和接收数据,避免重新加载表单或页面。

尝试执行以下操作:

  <form method="POST" action="admin/settings/css-example">

  <textarea id="css-example" name="css-example" rows="10">
  <?php $template_file = "../css-example.css";
  $file_handle = fopen($template_file, "rb");
  echo fread($file_handle, filesize($template_file));
  fclose($file_handle);
  ?>
  </textarea>

  <div class="form-actions">
  <input type="hidden" name="section" value="css-example">
  <input type="submit" name="updatesettings" value="Update">
  </div>
  </form>

尝试这样做:

  <form method="POST" action="admin/settings/css-example">

  <textarea id="css-example" name="css-example" rows="10">
  <?php $template_file = "../css-example.css";
  $file_handle = fopen($template_file, "rb");
  echo fread($file_handle, filesize($template_file));
  fclose($file_handle);
  ?>
  </textarea>

  <div class="form-actions">
  <input type="hidden" name="section" value="css-example">
  <input type="submit" name="updatesettings" value="Update">
  </div>
  </form>


将css存储在db中,然后在fly上生成css文件问题是——我已经有一个非常大的css文件,很难传输到数据库。我在想一个函数,它可以遍历CSS文件(比如文本文件),找到相应的样式,然后在{和}之间插入代码……如果你按照我在下面答案中发布的链接,你可以创建一个扩展名为.php而不是CSS的文件,但是,除了css内容,您还包括用户可以编辑的部分-是的,只有部分-用户可以编辑,只有这部分可以保存在db中,而所有其他内容都可以直接从文件中编辑,就像它的css一样,所以实际上您只给用户控制变量部分在db中存储css,然后在fly上生成css文件事情是——我已经有一个非常大的css文件,很难传输到数据库。我在想一个函数,它可以遍历CSS文件(比如文本文件),找到相应的样式,然后在{和}之间插入代码……如果你按照我在下面答案中发布的链接,你可以创建一个扩展名为.php而不是CSS的文件,但是,除了css内容,您还包括用户可以编辑的部分-是的,只有部分-用户可以编辑,只有这部分可以保存在db中,而所有其他内容都可以直接从文件中编辑,就好像它的css一样,所以实际上您只让用户控制可变部分。嗯,问题是,我相信他们知道一些基本的css编码,例如更改字体大小、颜色、重量。。。但我想确保他们写的东西,是插入到正确的风格。这也将是一个挑战