很多时候我使用过我自己“学习”的css技术。当我依赖于动态样式表,我可以把它放在html doc上时,我使用的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工具中的 Chrome 一样)中,浏览器尝试查找的网址为:
http://localhost:8080/ultimocaso/arquivos/imagens/%EF%BB%BF%EF%BB%BF%EF%BB%BF%EF%BB%BF%EF%BB%BFcoyote.jpg
如果我只使用带有该内容的css普通文件,它就像魅力一样。
任何人都知道告诉我为什么会发生这种情况和/或如何解决它?
修改
我使用Adobe Dreamweaver编辑我的文件并在我的偏好设置中 - &gt;新文档包含BOM签名的选项为OFF !!
答案 0 :(得分:2)
问题是您在PHP中包含了具有UTF-8 BOM的文件。
虽然您无法看到此BOM(字节顺序标记),但您可以想象文件实际包含的内容如下所示:
%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。