Здесь показана функция, которая меняет цвет текста, в данном случае под php-разметку. Переменные $a, $b, $c, $e, $f - это цвета. Функция изменяет цвета в любом документе html. Заведём файл function.dat, в нём построчно запишем Php функции, примерно так:
filetype
readfile
readlink
imagegif
imagepng
realpath
pathinfo
function
filesize
ftp_cdup
var_dump
passthru
is_float
include
defined
explode
shuffle
settype
implode
sprintf
current
strcspn
soundex
foreach
Чем больше Вы запишите в этот файл функций, тем медленнее работает программа. Php код будет выделен в таблицу. Это будет работать, если в Html тексте начальный тег Php будет прописан как <?php, а конечный как ?>
То есть, php код в html должен быть таким:
<?php
// здесь текст php
?>
Итак, функция php подсветки:
<?php
// слова (в нашем случае php функции), которые
// будем подсвечивать лежат в этом файле построчно
$light_function = 'function.dat';
if (! @file_exists ($light_function)){
@touch ($light_function);
$fp = fopen ($light_function, "w");
fwrite ($fp, 'filetype
readfile
readlink
imagegif
imagepng
realpath
pathinfo
function
filesize
');
fclose ($fp);
}
// если нет файла index.html, запишем его сами
$index_html = "index.html";
if (! @file_exists ($index_html)){
@touch ($index_html);
$fp = fopen ($index_html, "w");
fwrite ($fp, '
пробуем imagegif такой текст $var function и в нем изменять filesize
');
fclose ($fp);
}
// дополнительная функция выводящая контент из файла с Php функциями
function base_for_search ($path){
$path = str_replace ("\r","", @trim ( @implode ("", @file ($path))));
if ( strlen ($path) < 1){ return false; }
return "~(" . str_replace ("\n","|", preg_quote ($path,"~")) . ")~i";
}
// основная функция
function light ($str){
global $light_function;
// цвета на изменение
$a = "<td bgcolor='#CCFFCC'>";
$b = "<font color='#000080'>";
$c = "<font color='#993300'>";
$e = "<font color='#666699'>";
$f = "<font color='#006666'>";
// если $str это файл, то скачаем его весь опять же в $str
if ( @is_file ($str)){$str = @implode ('', @file ($str));}
// уберём нехороший символ \r \t
$str = preg_replace ("~\r|\t~s","",$str);
// подсветим все комментирующие строки строки цветом $e
if ( preg_match ("~//|#|\*~", $str)) {
$str = preg_replace ("~( ){1,10}[ ]*//~s",'//', $str);
$str = preg_replace ("~<br>([\n\ ]*[</b>]*[\n\ ]*)(#|//)(.+)<br>~siU",
"<br>\\1 ".$e."\\2\\3</font><br>", $str);
$str = preg_replace ("~<br>([\n\ ]*[</b>]*[\n\ ]*)(#|//)(.+)<br>~siU",
"<br>\\1 ".$e."\\2\\3</font><br>", $str);
$str = preg_replace ("~<br>([\n\ ]*[</b>]*[\n\ ]*)(#|//)(.+)<br>~siU",
"<br>\\1 ".$e."\\2\\3</font><br>", $str);
$str = preg_replace ("~/\*(.+)\*/~sU", $e."/*\\1*/</font>", $str);
}
// подсветим все переменные Php, то есть то,
// что начинается со знака $ в html тексте цветом $c
if ( preg_match_all ("~(\\\$){1,2}[\w]+([ ]*|$)~", $str, $array)){
while ( list (,$val) = each ($array[0])){
$val = trim ($val);
$arr[$val] = $val;
}
@rsort ($arr);
while ( list (,$val) = each ($arr)){
$search[$val] = "~" . preg_quote ($val,"~") . "~s";
$replace[$val] = $c.$val."</font>";
}
$search[] = "~0~e";
$replace[] = "0";
$str = preg_replace ($search, $replace, $str);
}
// заменим все слова (у нас функции Php), которые лежат построчно
// в файле function.dat в html тексте цветом $f
$str = str_replace ("<br>","<br> ",$str);
$search = "~([ˆa-z_:/>;\~\\\$-]{1})([\n]?[@!]?[ ]?)" .
substr ( base_for_search ($light_function), 1 , -2 ) .
"([ˆa-z_<\.=%@\"'-]{1})~is";
$replace = "\\1 $f<b>\\2\\3</b></font> \\4";
$str = preg_replace ($search, $replace, $str);
$str = str_replace ("<br> ","<br>",$str);
// выделим управляющие структуры php в html жирным шрифтом
$str = preg_replace ("~(continue|break| exit |true|false)[ ]?;~is", "<b>\\1</b>;", $str);
// выделим все скобки php в html цветом $b
$str = preg_replace ("~(\]|\[|\(|\)|\}|\{)~", $b."\\1</font>", $str);
// высветим все php скрипты в html тексте от начала до конца таблицей
// цветом, который задан ячейкой таблицы, то есть $a
if ( preg_match_all ("~<\?php(.+)\?>~sU", $str, $array)){
$search = $replace = array ();
while ( list (,$val) = each ($array[1])){
$_val = str_replace ("\\","\\\\",$val);
$search[] = "~<\?php" . preg_quote ($val,'~') . "\?>~sU";
$replace[] = "\n<table> <tr>" . $a . "\n" . $c . "<?php</font>" . $_val.$c . "?></font>\n</td> </tr></table>\n";
}
$search[] = "~0~e";
$replace[] = "0";
$str = preg_replace ($search, $replace, $str);
}
// заменим закрывающий и открывающий теги php на их Html эквиваленты
$str = str_replace ("<?","<?", $str);
$str = str_replace ("?>","?>", $str);
return $str;
}
// распечатаем подсвеченный php код в вашем Html файле
print light ($index_html);
?>