2009-12-12 35 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與代碼混合在一起。