【问题标题】:Why does the W3C Validator not take <?php include() tags in HTML5?为什么 W3C Validator 在 HTML5 中不采用 <?php include() 标签?
【发布时间】:2011-08-25 02:45:28
【问题描述】:

我试图验证一个简单的 HTML5 页面,它成功验证了除了三个标记为错误的 &lt;?php include 语句实例之外的所有内容。我不知道是什么让它不使用 PHP 标签。为什么会这样?以下是它输出的三个错误:

Validation Output: 3 Errors

 Line 29, Column 5: Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML. (XML processing instructions are not supported in HTML.)
            <?php include("inc/main-menu.php"); ?>

 Line 87, Column 9: Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML. (XML processing instructions are not supported in HTML.)
        2007-<?php echo date("Y"); ?> 

 Line 94, Column 3: Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML. (XML processing instructions are not supported in HTML.)
    <?php include_once("inc/analytics.php"); ?>

【问题讨论】:

  • 您是否明确强制使用 HTML5 模式?在我看来像标准 SGML 解析...
  • 如果您的服务器设置正确以服务 PHP,只需将 test.html 重命名为 test.php 应该会导致 PHP 实际执行并解决此问题。
  • 我猜你更大的问题是你的页面没有被你的服务器评估为 PHP。失败的 HTML 验证只是一个较小的症状。
  • 是的,我需要将扩展​​名更改为 .php。谢谢大家!

标签: php html validation


【解决方案1】:

那些 PHP 标记不应出现在您的标记中。它们会写在您的代码中,但只有您的网络服务器才能看到这些标签 - 您的服务器生成的页面不会显示这些标签。

我猜您是在复制源代码并粘贴到验证器中?尝试在浏览器中查看页面(假设您正在运行本地 Web 服务器,如 Wamp 或 Xampp),查看源代码,然后复制并粘贴该代码,而不是直接从您的编辑器中。

【讨论】:

  • 这里是 wamp 和 xampp 的链接,如果你还没有这些链接:wampserver.com/enapachefriends.org/en/xampp.html
  • 问题中有指向该页面的链接。
  • @John - 是的,好电话。好吧,我看到扩展名是.html。您可以设置您的服务器以读取 .html 格式的 PHP,但这不是标准的。尝试将扩展名更改为 .php,并再次确保您使用 Web 服务器来查看该页面。
  • 非常感谢。出于某种原因,我认为验证器不会占用 .php 页面,但在重命名并输入 url 后,它运行良好,并且没有错误和一个警告通过(html5 是实验性的)。
【解决方案2】:

&lt;?php 在任何方言中都不是有效的 HTML。 HTML 解析器永远不会看到&lt;?php 标签,因为它们是在服务器上进行评估的。因此,验证者抱怨是正确的。

【讨论】:

  • 是的,问题出在扩展名上。我不得不将其更改为 .php。
  • 其实SGML和XML都支持处理指令(en.wikipedia.org/wiki/Processing_Instruction),基本上就是任何包含在''中的代码和“?>”。这些节点在文档对象模型中作为 Node.PROCESSING_INSTRUCTION_NODE 公开,并且有自己的 XPath 指令。尽管建议不要在提供给浏览器的 HTML 中使用它们(因为某些浏览器会打印它们的内容),但我没有看到明确禁止在任何 HTML 方言中使用处理指令的规范。如果您确实知道这样的规范,请参考它。
【解决方案3】:

&lt;\?php include() ?&gt; 是 PHP 标签,需要被 PHP 处理器渲染。它不是一个有效的 HTML 标签

【讨论】:

  • PHP 处理器如何渲染它?
  • 您的意思是说 W3C 验证器将始终将带有任何 php 的页面标记为错误?如何在使用 php 代码的同时正确验证?
  • 这意味着扩展名必须是.php并且服务器需要能够呈现PHP。
  • 为此,您需要设置服务器以呈现 php.ini 文件。并将扩展名从 .html 更改为 .php
  • 谢谢,这就是问题所在。我将其更改为 .php 并且效果很好。
猜你喜欢
  • 2011-06-15
  • 2018-10-22
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
相关资源
最近更新 更多