2009-12-12 6 views
0

Quelque chose ne va pas avec mon impression "<option value..."; ligne de code php.Validation html avec php

Il conserve générer des messages d'erreur: une spécification de valeur d'attribut doit être une valeur d'attribut littéral à moins SHORTTAG YES est spécifié

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

Bon, alors comment puis-je corriger cette ligne de code:

//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 

de sorte qu'il est compatible html, le code php fonctionne bien, j'ai juste besoin de validation sur le HTML, parce que vous ne pouvez pas valider php, et la variable $ fileBase référence un fichier html, dans ce cas Addition serait l'un des fichiers attribué à $ fileB ase.

Répondre

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

devrait le faire

+2

.. tous les attributs doivent être entre guillemets (doubles) d'après la spécification XHTML. –

+0

Wow c'était rapide, j'étais encore en train d'éditer, merci. – Newb

+0

@Tatu Ulmanen: Pouvez-vous me montrer le document de spécification XHTML sur les guillemets? J'étais sous l'impression qu'une seule citation est acceptable aussi. –

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

Il y a quelques autres options:

Vous pouvez utiliser printf:

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

A here-doc:

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

Vous pouvez abandonner PHP temporairement (généralement une bonne technique, mais pas très joli ici):

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

Mais vraiment, ce que vous devez faire est d'utiliser l'un des nombreux systèmes de matriçage là-bas, et ne mélange pas HTML avec votre code.