phphtmlperformance

Escape HTML to PHP or Use Echo? Which is better?


In terms of performance , what would be better. Using PHP to echo all the HTML output so I can pepper it with the various bits of working code and variables or escape HTML to php periodically throughout the documents.

I know there may be some readability issues but I'm not to worried about that.

Thanks all!

Example 1

echo '<html>',
     '<body>',
     'The content of the ',$container,' element is displayed in your ', $other_container,
     '</body>',
     '</html>';

OR

<html>
<body>
The content of the <?php echo $container; ?> element is displayed in your <?php echo $other_container; ?>
</body>
</html>

Solution

  • It's all about which you find the most readable. Of course, this will vary with each situation. If you were doing an entire page, and there were large sections which did not have any PHP in it, then I'd break out of PHP and just write the plain HTML, whereas if there was a section which had a lot of PHP variables, I'd do it all in PHP.

    For example:

    <table>
        <tr>
            <td colspan="<?php echo $numCols; ?>">
                <?php echo $a; ?>, <?php echo $b; ?>, and <?php echo $c?>
            </td>
        </tr>
    </table>
    

    versus:

    <?php
    echo "<table>"
        . "<tr>"
        .    "<td colspan=\"" . $numCols . "\">"
        .        $a . ", " . $b . " and " . $c
        .    "</td>"
        . "</tr>"
        . "</table>"
    ; ?>
    

    Or

    <?php
    echo "<table>
             <tr>
                <td colspan='{$numCols}'>
                   {$a}, {$b}, and {$c}
                </td>
             </tr>
          </table>";
    ?>
    

    Also don't forget about printf

    <?php
    printf("<table>"
        . "<tr>"
        .    "<td colspan=\"%d\">%s, %s and %s</td>"
        . "</tr>"
        . "</table>"
        , $numCols
        , $a
        , $b
        , $c
    );
    ?>