如何在css文件中使用PHP

时间:2013-10-12 19:11:05

标签: php html css

我有CSS文件,我想以PHP可变格式引用该文件中的一些图像路径。然后我在html文件中引用该css文件。以下是我的文件

CSS文件

<? header ("Content-type: text/css");?>
 body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
 background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

HTML文件

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="css/layout.css" media="screen"> 
</head>

其他事情。你能解释一下如何做到这一点吗?

4 个答案:

答案 0 :(得分:13)

如果您能够重命名CSS文件“layout.php”,则不需要所有这些解决方法:

您的layout.php文件如下所示:

<?php header("Content-type: text/css; charset: UTF-8"); ?>
body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

您的HTML文件如下所示:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="css/layout.php" media="screen"> 
</head>

这个问题非常相似:Include: css with php file extension?

答案 1 :(得分:1)

base_url()的返回值可能不会在路径分隔符中结束。

考虑到这一点,试试这个:

@import url("<?php echo base_url().'/public/';?>css/layout.css");

(注意“公开”之前的斜杠)

  • 通过浏览器的“查看源”或类似信息检查页面来源,并检查@import中的路径是否正确

  • 使用类似于Chrome的devtools“网络”标签的请求记录器,查看您的浏览器尝试从中加载导入的CSS文件的URL。

您还可以通过浏览器查看CSS,以确定是否正确构建了内容。如果在响应中看到<?php,则需要让Apache将CSS文件视为PHP。

您可以在.htaccess文件中添加类似以下的内容:

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

您应该确保启用“mod_headers”Apache模块以允许使用Header指令。

虽然,我个人会将这些动态样式表重命名为.php.css扩展名。这没有任何效果,但Apache可以配置为仅将动态样式表传递给PHP预处理器。

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

答案 2 :(得分:1)

我认为问题是.css文件不会被解释为PHP,因此文件中的代码不会被执行。如果将其作为PHP文件包含在内,则应执行代码并填写值。

[编辑] 这似乎是这样做的方式,正如有人在原帖here的评论中所链接的回答所指出的那样。

答案 3 :(得分:1)

如果您对网址重写有一点了解,那就很简单了。

在根目录中写一个.htaccess文件,它看起来像:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^customized\.css$ css\_generator\.php [L]
</IfModule>

现在只需创建一个包含内容的文件css_generator.php:

<?php header('Content-type: text/css; charset: UTF-8'); ?>
 body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
 background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

你的HTML应该是这样的:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="customized.css" media="screen"> 
</head>

了解刚刚发生的事情。

  • 当您的浏览器加载custom.css时页面加载,它将被重定向到css_generator.php
  • css_generator.php的内容也将以yoursite.com/customized.css的形式提供

希望这有帮助