РНР имеет две стандартные функции для подсветки кода (см. гл. 4): highiight_string() и highiight_file О. Данные функции имеют два серьез-ных недостатка: поддерживается только подсветка PHP-кода и только кода, размещенного между тегами ?php и ? (а так же ? и ?). Поэтому в большинстве случаев приходится применять собственную функцию подсветки синтаксиса.
Рассмотрим задачу построения простейших аналогов функций highiight_ string о и highiight_fiie(), реализующих собственную схему подсветки ко-Да и, следовательно, допускающих реализацию подсветки синтаксиса языков, отличных от РНР. Строковый вариант функции назовем shighiighto. Она будет принимать в качестве параметра строку, содержащую код РНР. Файловый вариант пусть называется fhighlighto и будет принимать имя файла с PHP-скриптом. Обе функции будут возвращать строки с разметкой HTML, обеспечивающей подсветку синтаксиса. Функции должны, по возможности, подсвечивать максимальное количество элементов.
Построение функции подсветки следует решать с привлечением механизма регулярных выражений, специально созданных для такого рода задач. В листинге 5.16 приведен код функции shighiight о.