Newb
Newb

Reputation: 678

Validating html with php

Something is wrong with my print "<option value..."; line of php code.

It keeps generating error messages: an attribute value specification must be an attribute value literal unless SHORTTAG YES is specified

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

Okay, so how do i fix this line of 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

such that's it's html compliant, the php code works fine, I just need validation on the html, cause you can't validate php, and the variable $fileBase references an html file, in this case Addition would be one of the files allotted to $fileBase.

Upvotes: 0

Views: 508

Answers (3)

Ciar&#225;n Walsh
Ciar&#225;n Walsh

Reputation: 1866

There are a few other options:

You could use printf:

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

A here-doc:

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

You could drop out of PHP temporarily (generally a good technique, but not very pretty here):

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

But really, what you should be doing is using one of the many templating systems out there, and not mixing HTML in with your code.

Upvotes: 0

o.k.w
o.k.w

Reputation: 25820

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

Upvotes: 0

Tjofras
Tjofras

Reputation: 2096

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

Should do it

Upvotes: 3

Related Questions