Php подсветка

Здесь показана функция, которая меняет цвет текста, в данном случае под 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 ("~(&nbsp;){1,10}[ ]*//~s",'//', $str);
$str = preg_replace ("~<br>([\n\ ]*[</b>]*[\n\ ]*)(#|//)(.+)<br>~siU", 
"<br>\\1&nbsp;&nbsp;&nbsp;&nbsp;".$e."\\2\\3</font><br>", $str);
$str = preg_replace ("~<br>([\n\ ]*[</b>]*[\n\ ]*)(#|//)(.+)<br>~siU", 
"<br>\\1&nbsp;&nbsp;&nbsp;&nbsp;".$e."\\2\\3</font><br>", $str);
$str = preg_replace ("~<br>([\n\ ]*[</b>]*[\n\ ]*)(#|//)(.+)<br>~siU", 
"<br>\\1&nbsp;&nbsp;&nbsp;&nbsp;".$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 ("~&lt;\?php(.+)\?&gt;~sU", $str, $array)){
$search = $replace = array ();
while ( list (,$val) = each ($array[1])){ 
$_val = str_replace ("\\","\\\\",$val);
$search[] = "~&lt;\?php" . preg_quote ($val,'~') . "\?&gt;~sU";
$replace[] = "\n<table> <tr>" . $a . "\n" . $c . "&lt;?php</font>" . $_val.$c . "?&gt;</font>\n</td> </tr></table>\n";
} 
$search[] = "~0~e";
$replace[] = "0";
$str = preg_replace ($search, $replace, $str);
}

    // заменим закрывающий и открывающий теги php на их Html эквиваленты
$str = str_replace ("<?","&lt;?", $str);
$str = str_replace ("?>","?&gt;", $str);

return $str;
} 

    // распечатаем подсвеченный php код в вашем Html файле
print light ($index_html);
?>
Теги:
подсветка
Добавлено: 28 Апреля 2018 10:04:03 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...