A great to way to share your PHP code with visitors is to display it
directly in the browser with automatically generated syntax
highlighting. Here is a screenshot showing an example of
syntax-highlighted PHP code:
Displaying your PHP scripts in syntax-highlighted form is an excellent way to share source code details directly with your readers. Rather than zipping the script and requiring users to download, unzip, and open the file in an editor, displaying your code directly saves you and your visitors time, effort, and hassle. Plus, in my opinion, looking at syntax-highlighted PHP code is a beautiful sight, day or night ;)
In this article, we will explore 5 different ways to display the syntax-highlighted source of your PHP scripts. Three of the methods are designed to highlight entire files, and the other two are aimed directly at highlighting individual strings of PHP code. All of these methods employ PHP’s built-in syntax highlighter. Note that all of the code examples and files for this tutorial are available for free download at the end of the article.
One last note before we dig into the various techniques: use caution and a dash of common sense when it comes to displaying the source of your PHP scripts. Make sure that you are not unintentionally revealing sensitive data such as passwords, user logins, database credentials, etc. With that in mind, let’s get on with it..
Syntax-highlighting via
This method is dead-easy if enabled on your server. Simply change the file extension from
PHP syntax-highlighting via
Another easy method for highlighting the syntax of a PHP file is to call the
(X)HTML-validating syntax-highlighting for PHP files and strings
This method is nice because it requires no tampering with the target file, and also generates valid XHTML markup for the highlighted source code. To use this method, begin by placing the following code into a blank
Default syntax-highlighting for any PHP string
For on-the-fly syntactical highlighting of PHP strings, we can use PHP’s native function
Generating highlighted code from strings of PHP code using
Displaying your PHP scripts in syntax-highlighted form is an excellent way to share source code details directly with your readers. Rather than zipping the script and requiring users to download, unzip, and open the file in an editor, displaying your code directly saves you and your visitors time, effort, and hassle. Plus, in my opinion, looking at syntax-highlighted PHP code is a beautiful sight, day or night ;)
In this article, we will explore 5 different ways to display the syntax-highlighted source of your PHP scripts. Three of the methods are designed to highlight entire files, and the other two are aimed directly at highlighting individual strings of PHP code. All of these methods employ PHP’s built-in syntax highlighter. Note that all of the code examples and files for this tutorial are available for free download at the end of the article.
The PHP Functions
All of the syntax-highlighting methods presented in this tutorial rely on one of two core PHP functions,highlight_file()
and highlight_string()
:highlight_file()
— displays the source code for a specific PHP filehighlight_string()
— displays the source code for a specific string of PHP code
<font>
elements. The function highlight_file()
uses the name of the target file as the parameter and returns the file contents in syntax-highlighted form. Similarly, highlight_string()
uses a specific string of code as the parameter and returns it with syntax highlighting applied.One last note before we dig into the various techniques: use caution and a dash of common sense when it comes to displaying the source of your PHP scripts. Make sure that you are not unintentionally revealing sensitive data such as passwords, user logins, database credentials, etc. With that in mind, let’s get on with it..
PHP Syntax Highlighting for Individual Files
Using the PHP functionhighlight_file()
, we can generate “a syntax-highlighted version of the given PHP [file] using the colors defined in the built-in syntax highlighter for PHP.” 1Syntax-highlighting via
.phps
extensionThis method is dead-easy if enabled on your server. Simply change the file extension from
.php
to .phps
.
Be careful not to reveal the source of any secure data, such as
passwords, etc. If syntax highlighting doesn’t seem to be working with
this method, try adding the following directive to your domain’s httpd.conf
or to your site’s root (or other target directory) htaccess file: AddType application/x-httpd-php-source .phps
PHP syntax-highlighting via
FILE
constantAnother easy method for highlighting the syntax of a PHP file is to call the
highlight_file()
function at the beginning of the file. The first line displayed via the
preceding link is the only code needed to highlight any PHP document.
Simply add the following code to the target file and open in a browser
to see the syntax-highlighted source:<?php highlight_file( __FILE__ ); ?>
(X)HTML-validating syntax-highlighting for PHP files and strings
This method is nice because it requires no tampering with the target file, and also generates valid XHTML markup for the highlighted source code. To use this method, begin by placing the following code into a blank
.php
file and name it something like “highlighter.php
”:<?php
function string_syntax_xhtml( $string, $return = false ) {
$highlight = highlight_string( $string, true );
$replace = str_replace(
array( '<font color="', '</font>' ),
array( '<span style="color: ', '</span>' ),
$highlight
);
if( $return ) {
return $replace;
}
echo $replace;
return true;
}
function file_syntax_xhtml( $path, $return = false ) {
return string_syntax_xhtml( file_get_contents( $path ), $return );
}
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head><title></title></head><body>';
string_syntax_xhtml( file_get_contents( 'file_example.php' ) );
echo '</body></html>';
?>
To use this script, edit the “file_example.php
” in the
penultimate line to reflect the location of your target file. Then, to
display the syntax-highlighted source-code of the target file, create a
link to the file containing the script (i.e., highlighter.php
).
That’s all there is to it. Whenever a user clicks on the link to the
highlighter.php file, the source code of the target PHP file will be
displayed in the browser.PHP Syntax Highlighting for Individual Strings
Using the PHP functionhighlight_string()
, we can generate “a syntax-highlighted version of the given PHP [string] using the colors defined in the built-in syntax highlighter for PHP.” 2Default syntax-highlighting for any PHP string
For on-the-fly syntactical highlighting of PHP strings, we can use PHP’s native function
highlight_string()
. Using this function couldn’t be easier, simply use this code:<?php highlight_string('<?php phpinfo(); ?>'); ?>
..and replace the example argument (“<?php phpinfo(); ?>
”)
with the PHP string of your choice. When the script is processed it
will apply syntax highlighting to the input string similar to the
following HTML source code for this example (note that the opening and closing <?php
and ?>
are required with the input string):<font color="#000000">
<font color="#007700"><?</font>
<font color="#0000bb">php phpinfo</font>
<font color="#007700">(); </font>
<font color="#0000bb">?></font>
</font>
String syntax-highlighting with automatic quote-escapingGenerating highlighted code from strings of PHP code using
highlight_string
requires us to escape quotes (e.g., '
, "
).
Depending on your input string, escaping e\v\e\r\y quote may prove
tedious and boring, opening wide the doors to potential error.
Fortunately, the following technique eliminates the frustration by
cleaning things up automagically:<?php code(); ?>
$string = '[ place your "highly quoted" PHP string here ]';
<?php code(); ?>
<?
function code() {
static $on = false;
if ( !$on ) {
ob_start();
} else {
$buffer = "<?\n" . ob_get_contents() . "?>";
ob_end_clean();
highlight_string( $buffer );
}
$on = !$on;
}
?>
To use this script, place your target string between the “<?php code(); ?>
”
declarations and paste into any PHP file. Calling this file will then
generate the syntax-highlighted source of the entire code string.
0 comments:
Post a Comment