【问题标题】:Changing a style in CSS file using PHP使用 PHP 更改 CSS 文件中的样式
【发布时间】:2012-09-10 13:14:46
【问题描述】:

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

.test_style {
font-size:12px;
color:#ffffff;
}

管理员选择样式

test_style

并写下:

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;
}

有人知道我该怎么做吗?

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

【问题讨论】:

  • 将 css 存储在 db 中,然后即时生成 css 文件
  • 问题是——我已经有一个非常大的 CSS 文件,很难传输到数据库中。我在想一个函数,它可以通过 CSS 文件(比如通过文本文件),找到相应的样式,然后在其 { 和 } 之间插入代码...
  • 如果您按照我在下面的答案中发布的链接,您可以创建一个带有 .php 扩展名而不是 css 的文件,但不仅仅是 css 内容,您还包括部分 - 是的,只有部分 - 用户可以编辑,只有这部分可以保存在 db 中,而所有其他内容都可以直接从文件中编辑,就像它的 css 一样,所以实际上你只允许用户控制可变部分

标签: php css


【解决方案1】:

你可以在这个网站上使用同样的想法:http://www.barelyfitz.com/projects/csscolor/

我从Using PHP as a CSS file?复制了链接

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

【讨论】:

  • 谢谢,我要和这个一起去。
【解决方案2】:

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

【讨论】:

  • 嗯,问题是,我相信他们知道一些基本的 css 编码,例如更改字体大小、颜色、粗细……但我想确保他们写的内容是否已插入进入正确的风格。这也是我更改某些样式的简单方法,而无需在 css 文件本身中搜索它们...
【解决方案3】:

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

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

【讨论】:

  • 嗯,问题是,我相信管理员知道一些基本的 css 编码,例如更改字体大小、颜色、粗细……但我想确保他们写的内容是否被插入进入正确的风格。这也是我更改某些样式的简单方法,而无需在 css 文件本身中搜索它们...
  • 如果是这种情况,我会建议其他人所说的,您应该将其存储在规范化数据库中。我会遵循@blasteralfred 的示例,除了确保为表提供唯一的自动递增 ID,例如 RuleID。或者,您可以使用选择器作为每列的唯一标识符并避免 100% 类似的规则,但很多人会因为使用文本 ID 而接触到您。
【解决方案4】:

您可以使用数据库来执行此操作。在mysql 中创建一个带有表的数据库。为选择器制作一列,为样式制作另一列,使表格看起来像;

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

你可以echo这个数据到你的php文件中显示。当管理员更改样式时,您可以更新样式字段,查找.test_style 作为键。您可以尝试使用 jQuery + AJAX 来发送和接收数据,避免重新加载表单或页面。

【讨论】:

    【解决方案5】:

    尝试做这样的事情:

      <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>
    

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 2012-12-27
      • 1970-01-01
      • 2010-10-06
      • 2018-06-12
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多