2009-12-12 43 views
0

我的印刷品有问题"<option value..."; 一行php代码。使用php验证html

它使生成错误消息: 除非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将是其中一个文件分配给$ fileB酶。

回答

3
print "<option value = \"$fileBase\">$fileBase</option>\n"; 

应该这样做

+2

..根据XHTML规范,所有属性必须包含在(双)引号中。 – 2009-12-12 01:36:56

+0

哇,这很快,我还在编辑,谢谢。 – Newb 2009-12-12 01:37:28

+0

@Tatu Ulmanen:您可以将我指向关于双引号的XHTML规范文档吗?我印象中的单引号也是可以接受的。 – 2009-12-12 01:50:06

0
print "<option value='$fileBase'>$fileBase</option>\n"; 
0

还有其他几个选项:

你可以用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与代码混合在一起。