When PHP parses a file, it simply passes the text of the file
through until it encounters one of the special tags which tell it
to start interpreting the text as PHP code. The parser then
executes all the code it finds, up until it runs into a PHP
closing tag, which tells the parser to just start passing the text
through again. This is the mechanism which allows you to embed PHP
code inside HTML: everything outside the PHP tags is left utterly
alone, while everything inside is parsed as code.
There are four sets of tags which can be used to denote blocks of
PHP code. Of these, only two (<?php. . .?> and <script
language="php">. . .</script>) are always available; the
others can be turned on or off from the
php.ini configuration file. While the
short-form tags and ASP-style tags may be convenient, they are not
as portable as the longer versions. Also, if you intend to embed
PHP code in XML or XHTML, you will need to use the
<?php. . .?> form to conform to the XML.
The tags supported by PHP are:
Example 5-1. Ways of escaping from HTML 1. <? echo ("this is the simplest, an SGML processing instruction\n"); ?>
<?= expression ?> This is a shortcut for "<? echo expression ?>"
2. <?php echo("if you want to serve XHTML or XML documents, do like this\n"); ?>
3. <script language="php">
echo ("some editors (like FrontPage) don't
like processing instructions");
</script>
4. <% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<% echo . . ." %> |
|
The first way is only available if short tags have been
enabled. This can be done via the short_tags()
function (PHP 3 only), by enabling the short_open_tag configuration
setting in the PHP config file, or by compiling PHP with the
--enable-short-tags option to configure.
Again, the second way is the generally preferred method, as it
allows for the the use of PHP in XML-conformant code such as
XHTML.
The fourth way is only available if ASP-style tags have been
enabled using the asp_tags
configuration setting.
Note: Support for ASP-style tags was added in 3.0.4.
The closing tag for the block will include the immediately
trailing newline if one is present. Also, the closing tag
automatically implies a semicolon; you do not need to have a
semicolon terminating the last line of a PHP block.
PHP allows you to use structures like this:
Example 5-2. Advanced escaping <?php
if ($expression) {
?>
<strong>This is true.</strong>
<?php
} else {
?>
<strong>This is false.</strong>
<?php
}
?> |
|
This works as expected, because when PHP hits the ?> closing
tags, it simply starts outputting whatever it finds until it hits
another opening tag. The example given here is contrived, of
course, but for outputting large blocks of text, dropping out of
PHP parsing mode is generally more efficient than sending all of
the text through
echo() or
print() or somesuch.