Подсветка синтаксиса HTML

Здесь показана функция, которая меняет цвет текста, в данном случае под php-разметку. Переменные $a, $b, $c, $d - это цвета. Все слова в переменной $tring - это, подсвеченные функцией light слова... Функция изменяет цвета в любом документе.

function light ($str){ 
$a = "<span style='color:#000000'>"; $b = "<span style='color:#0000ff'>";
$c = "<span style='color:#000080'>"; $d = "<span style='color:#ff0000'>";
$tring="spliti preg_match_all Location elseif touch unlink split".
    " abs microtime else empty eregi_replace eregi trim strlen".
    " explode list int count ereg_replace substr break if echo".
    " date time function usort fclose fputs fopen foreach mail".
    " file_exists global sleep return is_file while getenv false".
    " is_readable clearstatcache exit header array gethostbyaddr".
    " setcookie sizeof flock filesize str_replace include ereg file for each"; 
$cheng = explode (" ", $tring); 
$strok = explode (" ", $str); 
$str=""; 
for($ii=0; $ii < sizeof($strok); $ii++){ 
for($i=0; $i < sizeof($cheng); $i++){ 
   if( eregi("$cheng[$i]", $strok[$ii])){ 
     preg_match_all("/(?|[?a-zA-Z0-9_%\$])($cheng[$i])([?a-zA-Z0-9_]|$)/", $strok[$ii], $array); 
     while(list($key, $val) = each ($array[0]))
    $strok[$ii] = eregi_replace ("$cheng[$i]","<b>$cheng[$i]</b>",$strok[$ii]); 
     } 
   } 
$str .= " $strok[$ii]"; 
} 

$str = eregi_replace ("\(", "$b<b>(</b></span>", $str);
$str = eregi_replace ("\)", "$b<b>)</b></span>", $str);
$str = eregi_replace ("\{", "$b<b>{</b></span>", $str);
$str = eregi_replace ("\}", "$b<b>}</b></span>", $str);
$str = eregi_replace ("<\?","$d<b><?</b></span>", $str);
$str = eregi_replace ("\?>","$d<b>?></b></span>", $str);
$str = eregi_replace ("<html>","$d<html></span>", $str);
$str = eregi_replace ("<\/html>","$d</html></span>", $str);
$str = eregi_replace ("<body>","$d<body></span>", $str);
$str = eregi_replace ("<\/body>","$d</body></span>", $str);
$str = eregi_replace ("\?>","$d<b>?></b></span>", $str);
$str = eregi_replace ("<html>","$d<html></span>", $str);
$str = eregi_replace ("<\/html>","$d</html></span>", $str);
$str = eregi_replace ("<body>","$d<body></span>", $str);
$str = eregi_replace ("<\/body>","$d</body></span>", $str);
$cheng = explode (" ", $str); 
$str =""; 
for($i=0; $i < sizeof($cheng); $i++){ 
if ( eregi("(?|[?\w\W]*)(\\\${1,2}[\w]*)([?\W]*|$)", $cheng[$i])){ 
preg_match_all("/(?|[?\w\W]*)(\\\${1,2}[\w]*)([?\W]*|$)/", $cheng[$i], $array); 
while(list($key, $val) = each ($array[0])){ 
list($a1,$a2) = explode ("\$",$val); 
$val_sss = "\\" ."\$" ."$a2"; 
$val = "\$"."$a2"; 
$cheng[$i] = eregi_replace ("$val_sss", "$c$val</span>", $cheng[$i]);
} 
} 
$str .= " $cheng[$i]"; 
} 
return $str; 
}

Как воспользоваться функцией? – Возможный сценарий:

// считываем ваш файл в массив строк и запускаем цикл
$general = @file("ваш_файл.htm"); 
for($i = 0 ; $i < count($general); $i++){ 
    // изменяем цвета слов в строках
$general[$i] = light ($general[$i]); 
    // печатаем строки с изменениями
echo" $general[$i] "; 
}

.