php - 动态 css 样式表的奇怪行为

标签 php css

很多时候,我都使用了自己“学会”的一种css技巧。当我依赖于可以将其放在 html 文档中的动态样式表时,我使用的 css 文件实际上不是 css,它们是 php 文件。示例:style.css.php。总是有效。但是现在我遇到了一个我以前从未见过的奇怪行为的麻烦。我的 fundo.css.php 文件有这个简单的格式:

body {
    background: url(../arquivos/imagens/<?php

// some php functions.. 
echo "coyote.jpg";

?>) top left no-repeat;
}

它向浏览器发送这个响应:

body {
    background: url(../arquivos/imagens/coyote.jpg) top left no-repeat;
}

漂亮,但如果浏览器显示背景!在 Firebug 控制台(如 Chrome 中的 Dev Tools)上,Network 选项卡中浏览器尝试查找的 url 是:

http://localhost:8080/ultimocaso/arquivos/imagens/%EF%BB%BF%EF%BB%BF%EF%BB%BF%EF%BB%BF%EF%BB%BFcoyote.jpg

如果我只是使用带有该内容的 css 普通文件,它就像一个魅力。

谁知道告诉我为什么会发生这种情况和/或如何解决它?

编辑

我使用 Adob​​e Dreamweaver 编辑我的文件,在我的首选项 -> 新文档中,包含 BOM 签名的选项已关闭!!

最佳答案

问题是您在 PHP 中包含了具有 UTF-8 BOM 的文件。

虽然你看不到这个BOM(Byte Order Mark),但是你可以想象现实中包含的文件是这样的:

%EF%BB%BF<?php
echo 'this is myinclude.php';
?>

当您使用 include 函数时,您实际上是在将这些字符导入文件中包含代码的位置。

<?php
// some code
include('myinclude.php');
// some code
?>

实际上是这样解释的:

<?php
// some code
?>
%EF%BB%BF
<?php
echo 'this is myinclude.php';
?>
<?php
// some code
?>

避免代码中间出现 BOM 的一种方法是将所有包含放在它们影响较小的地方,例如在文件的开头。另一种方法(我个人的选择)是以没有 BOM 的格式保存导入的文件,例如常规 UTF-8。

关于php - 动态 css 样式表的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214171/

相关文章:

php - PHP 中 Paypal 交易 ID 的安全性

javascript - DataTables javascript 无法应用于重复表

PHP/SQL 获取查询数据

php - 从数组中删除所有值,同时保持键不变

指针光标的 CSS 类

css - Div 在另一个 div 中不可见

php - 如何在 symfony2 中设置创建和更新日期?

php - 将 CSS3 rotateY 转换为 PHP Imagick::distortImage

javascript - 为什么 Progress Bar 不像 Text 那样动态变化?

javascript - 如何使 Bootstrap 下拉列表尊重移动设备上的水平视口(viewport)限制?