【问题标题】:Validating html with php用 php 验证 html
【发布时间】:2009-12-12 01:32:01
【问题描述】:

我的打印有问题"<option value..."; 一行php代码。

它不断生成错误消息: 除非指定了 SHORTTAG YES,否则属性值规范必须是属性值文字

<option value = Addition>Addition</option>
<and so on...>

好的,那我该如何修复这行代码:

//foreach loop to cycle through the array
      foreach ($testFiles as $myFile)
      {
        $fileBase = substr($myFile, 0, strlen($myFile) - 5);
       **//Problem here:**
        print "<option value = $fileBase>$fileBase</option>\n";
      } // end foreach

这就是它与 html 兼容,php 代码工作正常,我只需要对 html 进行验证,因为您无法验证 php,并且变量 $fileBase 引用了一个 html 文件,在这种情况下,Addition 将是其中之一分配给 $fileBase 的文件。

【问题讨论】:

    标签: php html validation


    【解决方案1】:
    print "<option value = \"$fileBase\">$fileBase</option>\n";
    

    应该这样做

    【讨论】:

    • ..因为根据 XHTML 规范,所有属性都必须用(双)引号括起来。
    • @Tatu Ulmanen:你能告诉我关于双引号的 XHTML 规范文档吗?我的印象是单引号也是可以接受的。
    【解决方案2】:
    print "<option value='$fileBase'>$fileBase</option>\n";
    

    【讨论】:

      【解决方案3】:

      还有其他几个选项:

      你可以使用 printf:

      printf('<option value="%s">%s</option>', $fileBase, $fileBase);
      

      here-doc:

      echo <<<HTML
          <option value="$fileBase">$fileBase</option>
      HTML;
      

      你可以暂时退出 PHP(通常是一个很好的技术,但在这里不是很漂亮):

      <?
      foreach ($testFiles as $myFile) {
          $fileBase = substr($myFile, 0, strlen($myFile) - 5);
          ?>
          <option value="<?= htmlentities($fileBase) ?>"><?= htmlentities($fileBase) ?></option>
          <?
      }
      ?>
      

      但实际上,您应该做的是使用现有的众多模板系统之一,而不是将 HTML 与您的代码混合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-04
        • 2014-10-17
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多