动态生成使用PHP变量的静态CSS文件

时间:2014-09-23 23:59:04

标签: php html css

我目前正在使用PHP变量从我的数据库中获取CSS值。这适用于php include,但是我想使用从DB中提取的这些变量的输出生成静态.css文件。不知道怎么回事?

css.php

<?
$sql = $dbh->prepare("SELECT * FROM styles"); //gets background_color (#000) from DB
$sql->execute();
$result = $sql->fetch();

foreach ($result as $k => $v) { 
    $$k = $v; //makes background_color = $background_color = #000
}

<style type="text/css">
.content {
    background-color: <?=$background_color?>;
}
?>

的index.php

<? require_once "css.php"; ?>

我想使用css.php生成的静态styles.css如下所示:

.content {background-color :; }

1 个答案:

答案 0 :(得分:2)

“我想生成静态 .css文件”

PHP:

# Generate some CSS string.
$css = '.class { color: #fff }';

# Save string to a file.
file_put_contents('/path/to/static.css', $css);

通过requiring css.php,您实际上使用动态 PHP文件重新计算并在每次点击时输出CSS,然后将其回显到当前文档中。需要是开销,因为需要访问硬盘驱动器,使浏览器使用普通的CSS文件包含标签请求单独的文件更有效。

如果你想要一个动态生成的CSS文件,那么另一种方法是将* .css作为PHP处理特定目录。

htaccess的:

<FilesMatch "\.css$">
  SetHandler application/x-httpd-php
  Header set Content-type "text/css"
</FilesMatch>

然后你可以在你的“css”文件中包含PHP代码。请注意,任何其他符合htaccess规则的css文件也将由PHP解析,无论它们是否实际包含任何PHP代码。