2009-09-18 231 views
13

我想在PHP中打包一个css文件...因此,我为css文件编写了头文件,并为其添加了php扩展,因此... css.php。问题是,如果该页面已被用作包含...或者这个新标题是否与包含在该页面中的框架冲突?包括:css文件扩展名为php?

+0

我可能会要求您要使用这个'什么css.php'文件来服务?某种形式的数据库生成或什么? – gnarf 2009-09-19 01:00:07

+0

你能显示一些代码吗?至于情况是什么,我有点失落。 – strager 2009-09-19 01:07:29

回答

18

gnarf钉了它。

我做的:

<link rel="stylesheet" type="text/css" media="screen" href="<? echo TMPL ?>css/name-of-file.css.php"> 

,然后在.css.php文件的顶部:

<? 
header('Content-Type: text/css'); 
// print out your php-driven css... 
?> 
+2

你也可以使用'header(“Content-type:text/css; charset:UTF-8”);' – Omar 2012-04-18 23:27:29

+0

这是否适用于IE7和8之类的旧浏览器? – 2015-08-20 05:04:13

+0

确保标题打印在文件的最顶端。如果你有(像我一样)顶部的空行,它可能无法在某个地方工作! – MilanG 2016-06-03 08:20:23

0

如果includer脚本不发送任何输出,它将起作用,否则您将有一个“标题已发送”错误。

在includer中使用ob_start()可以避免这种情况,并使所有的工作。

html框架与php包含无关,所以在这种情况下根本没有冲突。

15

如果您有一个名为css.php的文件,请确保第一行设置正确的内容类型标题。如果还没有,您可能还想将会话设置内容(如果有的话)拆分为bootstrap.php。从DATABSE加载一些样式信息的一个简单的例子:

<?php 
    header("Content-Type: text/css"); 
    include('bootstrap.php'); 
    // fetch some information to print out our styles 
    $result = mysql_query("SELECT * FROM site_styles"); 
    while ($row = mysql_fetch_assoc($result)) { 
    echo $row["selector"]." {\n".$row["css"]."\n}\n"; 
    } 
?> 

从其他PHP文件,只输出标签包括css.php,你希望使用PHP include()功能此任务!

<link rel="stylesheet" type="text/css" href="css.php"/> 

虽然因为大多数浏览器会缓存您的css文件很积极,你可能会发现,动态改变该文件的内容并没有做太多好。你可以强制通过添加GET参数到链接的href的更新:

<link rel="stylesheet" type="text/css" href="css.php?<?php echo $cssversion ?>"/> 

虽然这是怎么回事,每次完全刷新你的CSS文件中的参数变化。出于这个原因,通常更好的做法是提供静态css文件。如果你有一些需要从配置参数等加载的样式,这些样式不会经常改变,那么第一个例子应该对你很好。

+1

糟透了,看到你的回答有鲨鱼。 – emc 2013-04-15 17:38:26

6

HTML文件:
<link rel="stylesheet" type="text/css" href="css.php"/>

css.php文件:
<?php
header("Content-type: text/css; charset=utf-8");
//your php + css code goes here
?>

如果在你的CSS.php文件第一行代码是不是
header("Content-type: text/css; charset=utf-8");它不会工作