Alternative XML syntax highlighting.
<?php
function xml_highlight($s)
{
$s = htmlspecialchars($s);
$s = preg_replace("#<([/]*?)(.*)([\s]*?)>#sU",
"<font color=\"#0000FF\"><\\1\\2\\3></font>",$s);
$s = preg_replace("#<([\?])(.*)([\?])>#sU",
"<font color=\"#800000\"><\\1\\2\\3></font>",$s);
$s = preg_replace("#<([^\s\?/=])(.*)([\[\s/]|>)#iU",
"<<font color=\"#808000\">\\1\\2</font>\\3",$s);
$s = preg_replace("#<([/])([^\s]*?)([\s\]]*?)>#iU",
"<\\1<font color=\"#808000\">\\2</font>\\3>",$s);
$s = preg_replace("#([^\s]*?)\=("|')(.*)("|')#isU",
"<font color=\"#800080\">\\1</font>=<font color=\"#FF00FF\">\\2\\3\\4</font>",$s);
$s = preg_replace("#<(.*)(\[)(.*)(\])>#isU",
"<\\1<font color=\"#800080\">\\2\\3\\4</font>>",$s);
return nl2br($s);
}
?>
highlight_string
(PHP 4, PHP 5)
highlight_string — Syntax highlighting of a string
Descrierea
Outputs or returns a syntax highlighted version of the given PHP code using the colors defined in the built-in syntax highlighter for PHP.
Parametri
- str
-
The PHP code to be highligthed. This should include the opening tag.
- return
-
Set this parameter to TRUE to make this function return the highlighted code.
Valorile întroarse
If return is set to TRUE, returns the highlighted code as a string instead of printing it out. Otherwise, it will return TRUE on success, FALSE on failure.
Istoria schimbărilor
| Versiunea | Descriere |
|---|---|
| 4.2.0 | The return parameter was added. |
Exemple
Example #1 highlight_string() example
<?php
highlight_string('<?php phpinfo(); ?>');
?>
The above example will output (in PHP 4):
<code><font color="#000000"> <font color="#0000BB"><?php phpinfo</font><font color="#007700">(); </font><font color="#0000BB">?></font> </font> </code>
The above example will output (in PHP 5):
<code><span style="color: #000000"> <span style="color: #0000BB"><?php phpinfo</span><span style="color: #007700">(); </span><span style="color: #0000BB">?></span> </span> </code>
Note
Notă: Această funcţie utilizează buferizarea internă a ieşirilor cu acest parametru, de aceea ea nu poate fi utilizată în interiorul funcţiei de apel invers (callback) ob_start().
highlight_string
24-Jul-2008 10:38
13-Jun-2008 06:22
Here is an improved version of the code highlighter w/ linenumbers from 'vanessaschissato at gmail dot com' - http://nl.php.net/manual/en/function.highlight-string.php#70456
<?php
function printCode($source_code)
{
if (is_array($source_code))
return false;
$source_code = explode("\n", str_replace(array("\r\n", "\r"), "\n", $source_code));
$line_count = 1;
foreach ($source_code as $code_line)
{
$formatted_code .= '<tr><td>'.$line_count.'</td>';
$line_count++;
if (ereg('<\?(php)?[^[:graph:]]', $code_line))
$formatted_code .= '<td>'. str_replace(array('<code>', '</code>'), '', highlight_string($code_line, true)).'</td></tr>';
else
$formatted_code .= '<td>'.ereg_replace('(<\?php )+', '', str_replace(array('<code>', '</code>'), '', highlight_string('<?php '.$code_line, true))).'</td></tr>';
}
return '<table style="font: 1em Consolas, \'andale mono\', \'monotype.com\', \'lucida console\', monospace;">'.$formatted_code.'</table>';
}
?>
27-May-2008 01:04
Here is an improved version of Dimitry's xml_highlight function.
I fixed a bug which replaced the first character of the tags name,
and added a line to replace the tabs and spaces with
non-breaking space symbols to keep the identation.
<?
function xml_highlight($s){
$s = preg_replace("|<([^/?])(.*)\s(.*)>|isU", "[1]<[2]\\1\\2[/2] [5]\\3[/5]>[/1]", $s);
$s = preg_replace("|</(.*)>|isU", "[1]</[2]\\1[/2]>[/1]", $s);
$s = preg_replace("|<\?(.*)\?>|isU","[3]<?\\1?>[/3]", $s);
$s = preg_replace("|\=\"(.*)\"|isU", "[6]=[/6][4]\"\\1\"[/4]",$s);
$s = htmlspecialchars($s);
$s = str_replace("\t"," ",$s);
$s = str_replace(" "," ",$s);
$replace = array(1=>'0000FF', 2=>'0000FF', 3=>'800000', 4=>'FF00FF', 5=>'FF0000', 6=>'0000FF');
foreach($replace as $k=>$v) {
$s = preg_replace("|\[".$k."\](.*)\[/".$k."\]|isU", "<font color=\"#".$v."\">\\1</font>", $s);
}
return nl2br($s);
}
?>
12-May-2008 03:29
The simple XML syntax highlighting.
<?php
function xml_highlight($s)
{
$s = preg_replace("|<[^/?](.*)\s(.*)>|isU","[1]<[2]\\1[/2] [5]\\2[/5]>[/1]",$s);
$s = preg_replace("|</(.*)>|isU","[1]</[2]\\1[/2]>[/1]",$s);
$s = preg_replace("|<\?(.*)\?>|isU","[3]<?\\1?>[/3]",$s);
$s = preg_replace("|\=\"(.*)\"|isU","[6]=[/6][4]\"\\1\"[/4]",$s);
$s = htmlspecialchars($s);
$replace = array(1=>'0000FF', 2=>'808000', 3=>'800000', 4=>'FF00FF', 5=>'FF0000', 6=>'0000FF');
foreach($replace as $k=>$v)
{
$s = preg_replace("|\[".$k."\](.*)\[/".$k."\]|isU","<font color=\"".$v."\">\\1</font>",$s);
}
return nl2br($s);
}
?>
20-Feb-2008 11:49
Well, Just a little something I wrote which highlights an HTML code...It'll be going through many changes in the next few days.... until then =) enjoy
<?php
/*************************************\
CODE PANE 1.0 - SILVERWINGS - D. Suissa
\*************************************/
class HTMLcolorizer{
private $pointer = 0; //Cursor position.
private $content = null; //content of document.
private $colorized = null;
function __construct($content){
$this->content = $content;
}
function colorComment($position){
$buffer = "<<span class='HTMLComment'>";
for($position+=1;$position < strlen($this->content) && $this->content[$position] != ">" ;$position++){
$buffer.= $this->content[$position];
}
$buffer .= "</span>>";
$this->colorized .= $buffer;
return $position;
}
function colorTag($position){
$buffer = "<<span class='tagName'>";
$coloredTagName = false;
//As long as we're in the tag scope
for($position+=1;$position < strlen($this->content) && $this->content[$position] != ">" ;$position++){
if($this->content[$position] == " " && !$coloredTagName){
$coloredTagName = true;
$buffer.="</span>";
}else if($this->content[$position] != " " && $coloredTagName){
//Expect attribute
$attribute = "";
//While we're in the tag
for(;$position < strlen($this->content) && $this->content[$position] != ">" ;$position++){
if($this->content[$position] != "="){
$attribute .= $this->content[$position];
}else{
$value="";
$buffer .= "<span class='tagAttribute'>".$attribute."</span>=";
$attribute = ""; //initialize it
$inQuote = false;
$QuoteType = null;
for($position+=1;$position < strlen($this->content) && $this->content[$position] != ">" && $this->content[$position] != " " ;$position++){
if($this->content[$position] == '"' || $this->content[$position] == "'"){
$inQuote = true;
$QuoteType = $this->content[$position];
$value.=$QuoteType;
//Read Until next quotation mark.
for($position+=1;$position < strlen($this->content) && $this->content[$position] != ">" && $this->content[$position] != $QuoteType ;$position++){
$value .= $this->content[$position];
}
$value.=$QuoteType;
}else{//No Quotation marks.
$value .= $this->content[$position];
}
}
$buffer .= "<span class='tagValue'>".$value."</span>";
break;
}
}
if($attribute != ""){$buffer.="<span class='tagAttribute'>".$attribute."</span>";}
}
if($this->content[$position] == ">" ){break;}else{$buffer.= $this->content[$position];}
}
//In case there were no attributes.
if($this->content[$position] == ">" && !$coloredTagName){
$buffer.="</span>>";
$position++;
}
$this->colorized .= $buffer;
return --$position;
}
function colorize(){
$this->colorized="";
$inTag = false;
for($pointer = 0;$pointer<strlen($this->content);$pointer++){
$thisChar = $this->content[$pointer];
$nextChar = $this->content[$pointer+1];
if($thisChar == "<"){
if($nextChar == "!"){
$pointer = $this->colorComment($pointer);
}else if($nextChar == "?"){
//colorPHP();
}else{
$pointer = $this->colorTag($pointer);
}
}else{
$this->colorized .= $this->content[$pointer];
}
}
return $this->colorized;
}
}
$curDocName = $_REQUEST['doc'];
$docHandle = fopen($curDocName,"r");
$docStrContent = fread($docHandle,filesize($curDocName));
fclose($docHandle);
$HTMLinspector = new HTMLcolorizer($docStrContent);
$document = $HTMLinspector->colorize();
?>
<html>
<head>
<style type="text/css">
/**********************\
* MOZILLA FIREFOX STYLE
\**********************/
/*pre{font-family:Tahoma;font-size:px;}*/
.tagName{color:purple;}
.tagAttribute{color:red;}
.tagValue{color:blue;}
.HTMLComment{font-style:italic;color:green;}
</style>
</head>
<body>
<?php
echo "<pre>".$document."</pre>";
?>
</body>
</html>
17-Dec-2007 01:32
I wanted to build a better function and exclude operators {}=- from keywords span class. I also wanted to link functions used in my PHP code directly to the PHP site.
A lot more changes and tweaks have been made and the output is much better!
Find the function here :
http://www.tellinya.com/art2/262/highligh-php-syntax/
and ditch the old PHP one permanently.
Tested and built on PHP 5.2.0.
Looking forward to any input.
19-Sep-2007 05:05
peter at int8 dot com > "This hasn't been mentioned, but it appears that PHP opening and closing tags are required to be part of the code snippet."
It does also require enabled open/close tags. For example:
<?php
highlight_string('<? echo "Hello world!";?>');
?>
Won't work with short_open_tag = Off. Compare example 10.2 on:
Main mirror (http://www.php.net/manual/en/language.basic-syntax.php#id2530407)
US mirror (http://us.php.net/manual/en/language.basic-syntax.php#id2530407)
IN mirror (http://in.php.net/manual/en/language.basic-syntax.php#id2530407)
06-Sep-2007 05:47
When you quote highlighted PHP code in your website you need to escape quotes. If you quote a lot it may be annoyning. Here is tiny snippet how to make quoting tidy and clean. Write your code like this:
<?code()?>
$string = 'Here I put my code';
<?code()?>
And somewhere else define the function:
<?
function code()
{
static $on=false;
if (!$on) ob_start();
else
{
$buffer= "<?\n".ob_get_contents()."?>";
ob_end_clean();
highlight_string($buffer);
}
$on=!$on;
}
?>
02-Sep-2007 10:31
Here's an improved version of supremacy2k at gmail dot com's code. It's a small function that accepts either PHP syntax in plain text or from another script, and then parses it into an ordered list with syntax highlighting.
<?php
function print_php_code($str, $type) {
switch ($type) {
case "text":
$str = highlight_string($str, true);
break;
case "file":
$str = highlight_file($str, true);
break;
}
$str = explode("<br />", $str);
echo "<div>";
echo "<ol>\n";
foreach ($str as $line => $syntax) {
echo "<li><code>" . $syntax . "</code></li>";
}
echo "</ol>\n";
echo "</div>";
}
?>
01-Apr-2007 02:06
A simplification of functions vanessaschissato at gmail dot com at 17-Oct-2006 05:04.
Since it had trouble keeping the code intact. (It removed /* )
function showCode($code) {
$code = highlight_string($code, true);
$code = explode("<br />", $code);
$i = "1";
foreach ($code as $line => $syntax) {
echo "<font color='black'>".$i."</font> ".$syntax."<br>";
$i++;
}
}
04-Mar-2007 10:29
This fonction replaces every space with the html code (non-breaking space)
this is not very good because text will not go to the line and causes a big width
for example in a bordered div, text will go across the border
my solution :
echo str_replace(" ", " ",highlight_string("Arise, you children of the fatherland",true));
echo str_replace(" ", " ",highlight_file("test.php",true));
17-Oct-2006 05:04
This class show a code formated.
Allow options for to format.
Options: highlight code and to show line number
<?php
class Code
{
function printCode($code, $high_light = 0, $lines_number = 0)
{
if (!is_array($code)) $code = explode("\n", $code);
$count_lines = count($code);
foreach ($code as $line => $code_line) {
if ($lines_number) $r1 = "<span class=\"lines_number\">".($line + 1)." </span>";
if ($high_light) {
if (ereg("<\?(php)?[^[:graph:]]", $code_line)) {
$r2 = highlight_string($code_line, 1)."<br />";
} else {
$r2 = ereg_replace("(<\?php )+", "", highlight_string("<?php ".$code_line, 1))."<br />";
}
} else {
$r2 = (!$line) ? "<pre>" : "";
$r2 .= htmlentities($code_line);
$r2 .= ($line == ($count_lines - 1)) ? "<br /></pre>" : "";
}
$r .= $r1.$r2;
}
echo "<div class=\"code\">".$r."</div>";
}
}
?>
02-Oct-2006 03:11
This is a little chunk of code that i use to show the source of a file, i took part of the idea from a example i found on another php function page.
This code takes a php file and highlights it and places a line number next to it. Great for on the fly debugging.
<?php
// Get a file into an array
$lines = file('index.php');
// Loop through our array, show HTML source as HTML source; and line numbers too.
echo('<table border=0 cellpadding=0 cellspacing=0>');
foreach ($lines as $line_num => $line) {
echo('<tr>');
echo('<td bgcolor = "#cccccc">');
echo('<code>' . ($line_num + 1) . '</code>');
echo('</td>');
echo('<td>');
highlight_string($line);
echo('</td>');
echo('</tr>');
}
?>
20-Jul-2006 02:20
Thanks to peter at int8 dot com, your comment saved quite some time.
In my case even short tags didn't work right (PHP 5.0.5).
The following function offers subversion independent highlighting for PHP5. If you want to display code snippets without tags or use css for code formating it might be a usefull starting point. It is intented for small code fragments only and does not handle sources with multiple php blocks correctly.
Beware, the <code> tag is stripped off.
<?php
/*
These classes are used for highlighting, happy css-ing:
.phpdefault { color:#0000BB; font-weight: bold;}
.phpkeyword { color:#007700; font-weight: bold;}
.phpstring { color:#DD0000; font-weight: normal;}
.phpcomment { color:#FF8000; font-weight: normal;}
*/
/**
* Highlights PHP-source snippets with and without php-tags, inserts class definitions on request
*
* Strips <code> and <span color:black>, removes empty spans
*
* @param string $source Source to highlight
* @param boolean $classes, true links source elements to classes
* @return string
*/
function php_highlight($source, $classes = false)
{
if (version_compare( phpversion(), "5.0.0", "<")) return "PHP 5 required";
$r1 = $r2 = '##';
// adds required PHP tags (at least with vers. 5.0.5 this is required)
if ( strpos($source,' ?>') === false ) // xml is not THAT important ;-)
{
$source = "<?php ".$source." ?>";
$r1 = '#<\?.*?(php)?.*? #s';
$r2 = '#\?>#s';
}
elseif (strpos($source,'<? ') !== false)
{
$r1 = '--';
$source = str_replace('<? ','<?php ',$source);
}
$source = highlight_string($source,true);
if ($r1 =='--') $source = preg_replace('#(<\?.*?)(php)?(.*? )#s','\\1\\3',$source);
$source = preg_replace (array ( '/.*<code>\s*<span style="color: #000000">/', //
'#</span>\s*</code>#', // <code><span black>
$r1, $r2, // php tags
'/<span[^>]*><\/span>/' // empty spans
),'',$source);
if ($classes) $source = str_replace( array('style="color: #0000BB"','style="color: #007700"',
'style="color: #DD0000"','style="color: #FF8000"'),
array('class="phpdefault"','class="phpkeyword"',
'class="phpstring"','class="phpcomment"',),$source);
return $source;
}
echo '<p>Some tests:</p><p>';
echo php_highlight('<?php $test = new func("Text"); /* regular tags, use classes */ ?>',true),'<br />';
echo 'Inline code: ',php_highlight('<? $test = new func("Text"); /* short tags */ ?>'),
' works without or ',php_highlight('define (\'WITH_CLASSES\',\' too\'); /* no tags */',true),'<br />';
echo php_highlight('$test = new func("Text"); /* no tags, no classes */'),'<br />';
echo '</p><p>You are running PHP: '.phpversion().'</p>';
?>
hope it saves someones time, Tom
20-Apr-2006 01:43
This hasn't been mentioned, but it appears that PHP opening and closing tags are required to be part of the code snippet.
<?php highlight_string("<? \$var = 15; ?>"); ?>
works, while
<?php highlight_string("\$var = 15;"); ?>
does not. This is unforunate for those of use who want to show tiny code snippets, but there you go. Earlier versions of this function did not have this requirement, if I remember correctly.
07-Apr-2006 01:31
stalker, I`m afraid your function has a bug. Whenever a input string will contain a substring: 'color="foo.bar"' it will be replaced by your function, whitch is of course incorrect. Try this:
<?php
function xhtmlHighlightString( $str, $return=false )
{
$hlt = highlight_string( $str, true );
$ret = str_replace(
array( '<font color="', '</font>' ),
array( '<span style="color: ', '</span>' ),
$hlt );
if($return)
return $ret;
echo $ret;
return true;
}
function xhtmlHilightFile( $path, $return = false )
{
return xhtmlHighlightString( file_get_contents( $path ), $return );
} ?>
31-Dec-2005 10:37
to vouksh: I expanded your functions a bit:
<?php
function xhtmlHighlightString($str,$return=false) {
$hlt = highlight_string(stripslashes($str), true);
$fon = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $hlt);
$ret = preg_replace('#color="(.*?)"#', 'style="color: \\1"', $fon);
if($return)
return $ret;
echo $ret;
return true;
}
function xhtmlHighlightFile($path,$return=false) {
$hlt = highlight_file($path, true);
$fon = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $hlt);
$ret = preg_replace('#color="(.*?)"#', 'style="color: \\1"', $fon);
if($return)
return $ret;
echo $ret;
return true;
}
?>
growling octopus's code didn't work under Windows, so I made this and it worked:
<?php
if (!empty($_GET['source'])) {
$f = file_get_contents($_SERVER['SCRIPT_FILENAME']);
highlight_string($f);
exit();
}
?>
17-Oct-2005 01:37
Here's a trick I use when I want to show people the source to one of my scripts, but don't feel like uploading phps files or the host doesn't support them.
<?php
if (!empty($_GET['source'])) {
$f = implode(file(substr(__FILE__,strrpos(__FILE__,'/')+1)));
highlight_string(trim(substr($f,strpos($f,'?'.'>')+2)));
exit();
}
?>
By adding that to the top of the script, you can then call the script with ?source=1 and it will show the source for the file ... it should work with any script (as long as you aren't using $_GET['source'] for something else, you can always change that if you do).
10-Sep-2005 07:27
Fully working, XHTML 1.1 ready xhtml_highlight function. I included the stripslashes, because of some problems I had with out it. It should be safe to leave it in there, but if you experience problems, feel free to take it out.
<?
function xhtml_highlight($str) {
$hlt = highlight_string(stripslashes($str), true);
$fon = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $hlt);
$ret = preg_replace('#color="(.*?)"#', 'style="color: \\1"', $fon);
echo $ret;
return true;
}
?>
20-Aug-2005 08:27
Some BB-codes width preg_replace:
<?php
function bb_url($str){
return preg_replace('#[URL=([^\']*)]([^\']*)[/URL]#', '<a href="\\1" target=_blank>\\2</a>', $str);
}
function bb_php($str){
$str = str_replace("]\n", "]", $str);
$match = array('#\[php\](.*?)\[\/php\]#se');
$replace = array("'<div>'.highlight_string(stripslashes('$1'), true).'</div>'");
return preg_replace($match, $replace, $str);
}
function bb_img($str){
return preg_replace('#[IMG]([^\']*)[/IMG]#', '<img src="\\1" />', $str);
}
function bb_b{$str){
return preg_replace('#[B]([^\']*)[/B]', '<strong>\\1</strong>', $str);
}
function bb_i{$str){
return preg_replace('#[I]([^\']*)[/I]', '<em>\\1</em>', $str);
}
function bb_parse{$str){
$str = bb_url($str);
$str = bb_php($str);
$str = bb_img($str);
$str = bb_b($str);
$str = bb_i($str);
return $str
}
?>
21-Jun-2005 06:18
Concerning my code below:
I'm sorry, I completely forgot about str_ireplace being for PHP 5 for some reason. Also, there was another error I missed (too many late nights ;)). Here's the corrected code:
<?php
function highlight_code($code, $inline=false, $return=false) // Pre php 4 support for capturing highlight
{
(string) $highlight = "";
if ( version_compare(PHP_VERSION, "4.2.0", "<") === 1 )
{
ob_start(); // start output buffering to capture contents of highlight
highlight_string($code);
$highlight = ob_get_contents(); // capture output
ob_end_clean(); // clear buffer cleanly
}
else
{
$highlight=highlight_string($code, true);
}
# Using preg_replace will allow PHP 4 in on the fun
if ( $inline === true )
$highlight=preg_replace("/<code>/i","<code class=\"inline\">",$highlight);
else
$highlight=preg_replace("/<code>/i","<code class=\"block\">",$highlight);
if ( $return === true )
{
return $highlight;
}
else
{
echo $highlight;
}
}
?>
16-Jun-2005 12:55
In some cases, I found that it's useful to have highlight_string format <code>...</code> inline as part of a paragraph, and other times, as a block for demonstrating multiple lines of code. I made this function to help out.
<?php
function highlight_code($code, $inline=false, $return=false) // Pre php 4 support for capturing highlight
{
(string) $highlight = "";
if ( version_compare(phpversion(), "4.2.0", "<") === 1 )
{
ob_start(); // start output buffering to capture contents of highlight
highlight_string($code);
$highlight = ob_get_contents(); // capture output
ob_end_clean(); // clear buffer cleanly
}
else
{
$highlight=highlight_string($data, true);
}
## The classes below need to correspond to a stylesheet!
if ( $inline === true )
$highlight=str_ireplace("<code>","<code class=\"inline\">",$highlight);
else
$highlight=str_ireplace("<code>","<code class=\"block\">",$highlight);
if ( $return === true )
{
return $highlight;
}
else
{
echo $highlight;
}
}
?>
15-Jun-2005 08:32
manithu at fahr-zur-hoelle dot org forgot only one thing: to fix the break tags. The addidtion of the following should do it.
<?php
$str = str_replace("<br>", "<br />", $str);
?>
13-Jun-2005 10:04
On dleavitt AT ucsc DOT edu's comment:
You might want to use md5($html_string) instead of "piggusmaloy" as a generally good programming practice. Just in case "piggusmaloy" is actually in $html_string.
04-Jun-2005 11:37
This function does not seem to like <script> tags in HTML strings: if there are any close tags for scripts (whatever their language/type) the syntax highlighter will poop out. The workaround is simple though:
<?php
$html_string = str_replace("script","piggusmaloy", $html_string);
$html_string = highlight_string($html_string, true);
$html_string = str_replace("piggusmaloy","script", $html_string);
echo $html_string;
?>
This works best if you don't have "piggusmaloy" anywhere in your string (a safe assumption?)
30-May-2005 01:02
A neat function I made. Syntax coloring, row numbers, varying background colors per row in the table.
<?
function showCode($code) {
$html = highlight_string($code, true);
$html = str_replace("\n", "", $html);
$rows = explode("<br />", $html);
$row_num = array();
$i = 1;
foreach($rows as $row) {
if($i < 10) {
$i = "0".$i;
}
if($i==1) {
$row_num[] = "<tr><td><code><font color=\"#000000\"><code>$i</code></font>\t$row</code></td></tr>";
}
if($i!=1) {
if(is_int($i/2)) {
$row_num[] = "<tr bgcolor=\"#F9F9F9\"><td><code><font color=\"#000000\">$i</font>\t$row</code></td></tr>";
} else {
$row_num[] = "<tr><td><code><font color=\"#000000\">$i</font>\t$row</code></td></tr>";
}
}
$i++;
}
return "<pre>\nFilename: <b>$_GET[file]</b>\n<table
style=\"border:1px #000000 solid\">".implode($row_num)."</table></pre>";
}
?>
10-Apr-2005 01:58
With this function you can highlight php code with line numbers:
<?php
function highlight_php($string)
{
$Line = explode("\n",$string);
for($i=1;$i<=count($Line);$i++)
{
$line .= " ".$i." <br>";
}
ob_start();
highlight_string($string);
$Code=ob_get_contents();
ob_end_clean();
$header='<table border="0" cellpadding="0" cellspacing="0" width="95%" style="border-style: solid; border-width:1px; border-color: white black black white">
<tr>
<td width="100%" colspan="2" style="border-style: solid; border-width:1px; border-color: white; background-color: #99ccff; font-family:Arial; color:white; font-weight:bold;">Php-Code:</td>
</tr>
<tr>
<td width="3%" valign="top" style="background-color: #99ccff; border-style: solid; border-width:1px; border-color: white;"><code>'.$line.'</code></td>
<td width="97%" valign="top" style="background-color: white;"><div style="white-space: nowrap; overflow: auto;"><code>';
$footer=$Code.'</div></code></td>
</tr>
</table>';
return $header.$footer;
} ?>
17-Feb-2005 08:15
I've been working on a good replacement for the highlight_string() function; and here is what I've come up with so far:
<?
function get_sourcecode_string($str, $return = false, $counting = true, $first_line_num = '1', $font_color = '#666'){
$str = highlight_string($str, TRUE);
$replace = array(
'<font' => '<span',
'color="' => 'style="color: ',
'</font>' => '</span>',
'<code>' => '',
'</code>' => '',
'<span style="color: #FF8000">' =>
'<span style="color: '.$font_color.'">'
);
foreach ($replace as $html => $xhtml){
$str = str_replace($html, $xhtml, $str);
}
// delete the first <span style="color:#000000;"> and the corresponding </span>
$str = substr($str, 30, -9);
$arr_html = explode('<br />', $str);
$total_lines = count($arr_html);
$out = '';
