| Тестирую работу функции подстветки синтаксиса PHP (из книги авторов сайта "PHP 5на примерах", стр.154, листинг 5.16). Код функции привожу ниже.
Проблема в том, что при вызове функции выводится сообщение об ошибке:
Parse error: syntax error, unexpected $end in Z:\home\test.ru\www\shighlight.php on line 66
|
Ошибка указывает на закрывающий тег "?>".
Проверил сам каждую строчку, может где забыл закрыть где скобку - нет, все корректно.
Вызываю функцию из другого файла так:
<?php
include_once("shighlight.php");
$strphp = '$var = microtime(); // Функция microtime() возвращает текущую метку времени с микросекундами ';
echo shighlight($strphp);
?>
|
Подскажите, где проблема? Спасибо.
А вот сам код функции (из файла shighlight.php):
<?php
function shighlight($document)
{
//Преобразуем угловые скобки для отображения HTML-тегов
$document = str_replace("<", "<", $document);
$document = str_replace(">", "&qt;", $document);
//Обрамляем теги PHP <?php и ?> темно-красным цветом
$tegs = array("'<\?php'si", "'<\?'si", "'\?&qt;'si");
$replace = array("<font color=#95001E><?php</font>",
"<font color=#95001E><?</font>",
"<font color=#95001E>?&qt;</font>");
$document = preg_replace($tegs, $replace, $document);
//Обрамляем комментарии светло-синим цветом
$document = preg_replace("'(?:#|//)[^\n]*|/\*.*?\*/)'si",
"<font color=#244ECC>\\1</font>",
$document);
//Осуществляем переносы строк
$document = preg_replace("'(\n)'si", "<br>\\1", $document);
//Обрамляем цветом функции
$document = preg_replace("'([\w]+)([\s]*)[\(]'si",
"<font color=#0000CC><b>\\1</b></font>\\2(",
$document);
//Обрамляем цветом операторы
$separator = array("'\,'si",
"'\-'si",
"'\+'si",
"'\('si",
"'\)'si",
"'\{'si",
"'\}'si");
$replace = array("<font color=#1A691A>,</font>",
"<font color=#1A691A>-</font>",
"<font color=#1A691A>+</font>",
"<font color=#1A691A>(</font>",
"<font color=#1A691A>)</font>",
"<font color=#1A691A>{</font>",
"<font color=#1A691A>}</font>");
$document = preg_replace($separator, $replace, $document);
//Обрамляем цветом переменные PHP
$document = preg_replace("'([\$]{1,2}[A-Za-z_]+)'si",
"<b><font color=#000000>\\1</font></b>",
$document);
//Обрамляем цветом строки, заключенные в одинарные или двойные кавычки
$str = array("'(\"[^\"]*\")'si",
"'(\'[^\']*\')'si");
$replace = array("<font color=#FFCC00>\\1</font>",
"<font color=#FFCC00>\\1</font>");
$document = preg_replace($str, $replace, $document);
//Обрамляем цветом зарезервированные слова языка PHP
$str = array("'(echo)'si",
"'(print)'si",
"'(while)'si",
"'(for)'si",
"'(if)'si",
"'(else)'si",
"'(switch)'si",
"'(function)'si",
"'(array)'si");
$replace = array_fill(0,
count($str),
"<b><font color=#0000CC>\\1</font></b>");
$document = preg_replace($str, $replace, $document);
//Возвращаем результат работы функции
return "<code>$document</code>";
}
?>
|
| |