PHP或Apache是​​否会影响DTD:在IE7标准模式下呈现XHTML的问题

|| 我有一个静态HTML(index.html)和DOCTYPE,它会触发IE7中的标准模式:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
<head>
然后,我将页面转换为三个PHP HTML模板:header.html.php,index.php,footer.html.php。而且header.html.php包含上述确切的DOCTYPE。 但是每次我在IE7中声明index.php时,都会使渲染混乱。 我已经使用命令“ 1”在IE7和FF3中进行测试 对于静态html页面,IE7和FF3都给了我CSS1Compat,这是我期望的模式。 但是对于PHP生成的页面,FF3给我CSS1Compat,而IE7给我BackCompat。 我认为这是问题所在: 我已经从IE7下载了该页面,发现DOCTYPE变成没有地址的
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
。 但是在ff3和chrome中下载相同的PHP生成页面时,DOCTYPE正确为
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
当我测试页面时,毫不奇怪,W3C验证器获得的源代码的第一行是
# <!-- A customized tag to distinguish different pages --> # <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
。 W3C验证表明第一行为空。 我已经删除了所有静态PHP文件和CSS文件上的BOM,但仍然遇到问题。 这是Apache还是PHP的问题?有人有解决的办法吗? 谢谢。     
已邀请:
要调查的一件事是响应返回的编码字符。如果字符编码不是默认编码(UTF-8或-16),则应该包含一个xml声明:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE html 
    PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
由于您正在其他浏览器中获取适当的内容,因此我怀疑是某种原因导致IE阻塞,因此将其更改为更加宽松的文档类型。 您是否使用W3C验证程序验证了文档?     
不,这不是apache或php问题。生成响应的是代码问题。     

要回复问题请先登录注册