Napisałem sobie funkcję, która służy do kolorowania składni kodu źródłowego jednak w tej funkcji jest dużo porównań i to trochę źle wygląda nie wiem czy tak to może zostać, ale jak nie to jakie byście proponowali inne rozwiązanie.
function kolorowanie($plik3) {
$cudzy = false;
$zmienna = false;
$instrukcje = false;
$licznik = 0;
while ( $licznik <= count($plik3) ) {
//jeżeli znak będzie się zaczynał od znaku dolara to znaczy, że to jest zmienna i pokolorować
if ($plik3[$licznik] == "\$") $zmienna = true;
//jeżeli będzie zakończenie wpisywania zmiennej
else if ( ($plik3[$licznik] == " " or $plik3[$licznik] == "=" or $plik3[$licznik] == "-" or $plik3[$licznik] == ")" or $plik3[$licznik] == "\"" or $plik3[$licznik] == ";") and $zmienna == true ) $zmienna = false;
//to samo dla cudzysłowia
if ($plik3[$licznik] == "\"" and $cudzy == true) $cudzy = false;
//zakończenie cudzysłowia
else if ($plik3[$licznik] == "\"") $cudzy = true;
//ifa
if ($plik3[$licznik] == "i" and $plik3[$licznik+1] == "f" and $cudzy == false and ($plik3[$licznik-1] == " " or $plik3[$licznik-1] == "\n" ) and ($plik3[$licznik+2] == "{" or $plik3[$licznik+2] == "(" or $plik3[$licznik+2] == " ") ) $instrukcje = true;
//zakończenie ifa
if ($plik3[$licznik-2] == "i" and $plik3[$licznik-1] == "f" and $cudzy == false and ($plik3[$licznik-3] == " " or $plik3[$licznik-3] == "\n" ) and ($plik3[$licznik] == "{" or $plik3[$licznik] == "(" or $plik3[$licznik] == " ") ) $instrukcje = false;
//itp.
if ($plik3[$licznik] == "e" and $plik3[$licznik+1] == "l" and $plik3[$licznik+2] == "s" and $plik3[$licznik+3] == "e" and $cudzy == false and ($plik3[$licznik-1] == " " or $plik3[$licznik-1] == "\n" ) and ($plik3[$licznik+4] == "{" or $plik3[$licznik+4] == "(" or $plik3[$licznik+4] == " ") ) $instrukcje = true;
//itp.
if ($plik3[$licznik-4] == "e" and $plik3[$licznik-3] == "l" and $plik3[$licznik-2] == "s" and $plik3[$licznik-1] == "e" and $cudzy == false and ($plik3[$licznik-5] == " " or $plik3[$licznik-5] == "\n" ) and ($plik3[$licznik] == "{" or $plik3[$licznik] == "(" or $plik3[$licznik] == " ") ) $instrukcje = false;
//itp.
if ($plik3[$licznik] == "f" and $plik3[$licznik+1] == "o" and $plik3[$licznik+2] == "r" and $cudzy == false and ($plik3[$licznik-1] == " " or $plik3[$licznik-1] == "\n" ) and ($plik3[$licznik+3] == "{" or $plik3[$licznik+3] == "(" or $plik3[$licznik+3] == " ") ) $instrukcje = true;
//itp.
if ($plik3[$licznik-3] == "f" and $plik3[$licznik-2] == "o" and $plik3[$licznik-1] == "r" and $cudzy == false and ($plik3[$licznik-4] == " " or $plik3[$licznik-4] == "\n" ) and ($plik3[$licznik] == "{" or $plik3[$licznik] == "(" or $plik3[$licznik] == " ") ) $instrukcje = false;
//itp.
if ($plik3[$licznik] == "w" and $plik3[$licznik+1] == "h" and $plik3[$licznik+2] == "i" and $plik3[$licznik+3] == "l" and $plik3[$licznik+4] == "e" and $cudzy == false and ($plik3[$licznik-1] == " " or $plik3[$licznik-1] == "\n" ) and ($plik3[$licznik+5] == "{" or $plik3[$licznik+5] == "(" or $plik3[$licznik+5] == " ") ) $instrukcje = true;
//itp.
if ($plik3[$licznik-5] == "w" and $plik3[$licznik-4] == "h" and $plik3[$licznik-3] == "i" and $plik3[$licznik-2] == "l" and $plik3[$licznik-1] == "e" and $cudzy == false and ($plik3[$licznik-6] == " " or $plik3[$licznik-6] == "\n" ) and ($plik3[$licznik] == "{" or $plik3[$licznik] == "(" or $plik3[$licznik] == " ") ) $instrukcje = false;
if ($instrukcje == true) {
print "<font color=grenn>" . $plik3[$licznik] . "</font>";
}
else if ($zmienna == true) {
print "<font color=blue>" . $plik3[$licznik] . "</font>";
}
else if ($cudzy == true) {
print "<font color=red>" . $plik3[$licznik] . "</font>";
}
else {
print "<font color=black>" . $plik3[$licznik] . "</font>";
}
if ($plik3[$licznik] == "\n") print "<br>";
$licznik++;
}
}