如何成功验证 .php 文件 XHTML

如何成功验证 .php 文件 XHTML

有人能向我解释如何获取使用文件开头的 shebang 来通过 XHTML 验证器的 .php 文档吗?我不断收到一个错误,指出我必须将 xml utf-8 声明放在文件开头。当我这样做时,我必须从第一行删除我的 shebang。结果,服务器无法读取我的文档,我收到错误。例如,以下文件未通过 XHTML 验证:

#!/usr/local/bin/php

<?= '<' . '?xml version="1.0" encoding="utf-8"?' . '>' ?>

<?php     

  $strLessonDescription = file_get_contents('http://example.com/.../lesson5.txt');

  if ($strLessonDescription  == NULL)
     print "Error - lesson5.txt cannot be opened";

  $arrLessonVocabulary = array();

  $arrLessonVocabulary = file("http://example.com/.../vocabulary5.txt");

  if ($arrLessonVocabulary == NULL)
     print "Error - vocabulary5.txt cannot be opened";  

?>

  <!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" >

答案1

要么配置您的服务器以删除 shebang 行,要么配置服务器以通过 PHP 解释器解析 .php 文件,然后删除 shebang 行。

我从来没有遇到过(据我所知)甚至有能力的使用该 shebang 行,所以我甚至无法想象您使用什么来提供比这更具描述性的内容。如果您在帖子中提供更多详细信息,也许有经验的人可以为您提供更好的答案。

答案2

您是在尝试验证原始 PHP 源代码,还是脚本执行的输出?我怀疑后者会更有用,在这种情况下,唯一需要担心的是 shebang 是否最终会出现在脚本输出中。

您能否发布您如何执行 PHP 脚本(例如,它是从命令行/定期脚本还是 Web 请求调用)?

答案3

 /usr/local/bin/php -l file.php
 will parse the file for any errors


 /usr/local/bin/php file.php | xmllint
 will parse the output from your php script (that is the xhtml)

答案4

看起来你的 shebang 行之后但在第一个 之前有一个空行<?=。不要这样做,那个空行是输出,所以你的 xml 文件将以一个空行开头,而不是<?xml ...?>

相关内容