页面顶部的Unicode字符导致WebMatrix的差距

时间:2010-08-16 09:01:59

标签: php html css unicode

我正在开发一个使用PHP的简单网站,这是一种我很久没有碰过的语言,特别是当它在WebMatrix的Windows系统上运行时。最近我一直在将几个从ASP.NET(Umbraco)到PHP的网站移植到一个用PHP编写的基本模板类,到目前为止,事情进展顺利,直到一些unicode字符开始出现在DOCTYPE之前的源代码中。 。 Mozilla源检查器没有显示这些,但是当发布到记事本时,会显示两个unicode框/字符。

我已经查看了Firebug中的问题,它似乎相信所有JavaScript都在body标签内运行,即使快速查看源代码也表明情况并非如此。

从WebMatrix在ASP.NET中运行时,相同的源代码可以正常工作,但是在PHP中使用以下代码修改后的网站不希望正常工作。这是我正在使用的代码,从典型的页面文件开始。

<?php
include "./template.class.php";

$content = "<p>Test.</p>";

$template = new Template;
$template->load("./design.php");
$template->replace("title", "Title");
$template->replace("ContentTitle", "Test");
$template->replace("PageContent", $content);
$template->publish();
?>

这是我正在使用的模板类。

<?php
class Template {
    var $template;

    function load($filepath) {
        $this->template = file_get_contents($filepath);
    }

    function replace($var, $content) {
        $this->template = str_replace("@$var@", $content, $this->template);
    }

    function publish() {
        eval("?>".$this->template."<?");
    }
}
?>

如图所示,设计页面用于每个页面,必要的字段用at符号列出(例如<title>@title@</title>)。

我很确定CSS和HTML不应该受到责备,因为我在其他网站上使用的代码基本相同,没有任何问题。


编辑:已发现此问题,但是这样做表明,在Microsoft的新WebMatrix编辑器中编辑PHP文件会在保存PHP文件时不断导致字节顺序标记出现。如前所述,Notepad ++非常有效地排除了这个问题,如果您遇到同样的问题,请打开所有必需的文件,然后转到顶层菜单中的编码,然后单击“转换为UTF-8无BOM”。一旦保存,问题就会消失。

我认为这是WebMatrix工具中的一个有效错误,如果我的公司Internet在Windows Live中没有受到限制,我会非常乐意提交错误。如果你碰巧看到它被发布为一个bug或自己发布,那么请对这篇文章发表评论,因为即使有它的缺陷,WebMatrix工具也是ASP.NET Razor和PHP的一个很棒的小编辑器。

2 个答案:

答案 0 :(得分:3)

这很可能是BOM。尝试找到它前面的文件(它可能是PHP包含的文件之一)并设置编辑器以保存没有它的文件。

请参阅this question了解删除它的一些方法。

答案 1 :(得分:1)

这称为byte-order mark (BOM)。对于UTF-8来说完全没必要,但是Windows系统喜欢将它添加到文件的开头。

您可以通过使用选项(“UTF-8无BOM”)或在十六进制视图中删除字符(3个字节),在良好的编辑器中删除它。