为什么这个页面没有验证?
http://www.jethroweb.nl/test/test.php
我认为XHTML代码没问题,但W3C Markup Validation Service和WDG HTML Validator不同意。
更新:XHTML代码由PHP生成,这是第一行代码:
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"';
echo PHP_EOL;
echo ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
echo PHP_EOL;
echo '<html xmlns="http://www.w3.org/1999/xhtml">';
echo PHP_EOL;
echo '<head>';
echo PHP_EOL;
UPDATE2:也许这更像是一个PHP问题。当我将生成的XHTML代码粘贴到Notepad++时,我在第一行看到一个问号:
答案 0 :(得分:2)
在UTF-8文件中找到的字节顺序标记。
已知UTF-8编码文件中的Unicode字节顺序标记(BOM)会导致某些文本编辑器和旧版浏览器出现问题。在获得更好的支持之前,您可能需要考虑避免使用它。
这就是你的错误的原因:字节顺序标记是一个零宽度空间,它告诉你prolog中不允许使用该字符(在doctype之前)。
使用文本编辑器重新保存文件,该编辑器允许在没有BOM的情况下进行保存(几乎除了记事本之外的所有内容)。
答案 1 :(得分:2)
因为文件是以字节顺序标记发送的。
字节顺序标记用于标识文本文件的编码,但在通过Web发送文本时不应包含它们。
如果您的Web服务器在发送文件时无法删除字节标记,则必须保存没有字节顺序标记的文件。大多数编辑都可以选择在另存为对话框中执行此操作。
答案 2 :(得分:2)
您的php源文件test.php
包含字节顺序标记。尝试再次保存test.php
而不使用字节顺序标记。