Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите найти ошибку в коде
 
 автор: baston   (17.02.2010 в 14:47)   письмо автору
 
 

Тестирую работу функции подстветки синтаксиса 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("<""&lt;"$document);
  
$document str_replace(">""&qt;"$document);
  
//Обрамляем теги PHP <?php и ?> темно-красным цветом
  $tegs = array("'&lt;\?php'si", "'&lt;\?'si", "'\?&qt;'si");
  $replace = array("<font color=#95001E>&lt;?php</font>",
                    "<font color=#95001E>&lt;?</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>";
}
?>

  Ответить  
 
 автор: t3ma   (17.02.2010 в 15:02)   письмо автору
 
   для: baston   (17.02.2010 в 14:47)
 

Вы даже запостив сюда сообщение не увидели ошибку в коде ?

  Ответить  
 
 автор: baston   (17.02.2010 в 15:05)   письмо автору
 
   для: t3ma   (17.02.2010 в 15:02)
 

Может, глаза замылились :), но не вижу. Ткните пальцем...

  Ответить  
 
 автор: t3ma   (17.02.2010 в 15:07)   письмо автору
 
   для: baston   (17.02.2010 в 15:05)
 

Посмотрите где подсветка синтаксиса кода php закончилась в Вашем сообщении функции shighlight()

требуется убрать строчку

//Обрамляем теги PHP <?php и ?> темно-красным цветом

  Ответить  
 
 автор: baston   (17.02.2010 в 15:08)   письмо автору
 
   для: t3ma   (17.02.2010 в 15:07)
 

Благодарю, добрый человек. Вот-те на...

  Ответить  
 
 автор: Красная_шляпа   (17.02.2010 в 17:12)   письмо автору
 
   для: baston   (17.02.2010 в 15:08)
 

Есть стандартные функции для подсветки кода highlight_string и highlight_file

  Ответить  
 
 автор: baston   (17.02.2010 в 18:05)   письмо автору
 
   для: Красная_шляпа   (17.02.2010 в 17:12)
 

Я знаю, однако речь идет о собственных функциях подсветки кода (не обязательно PHP) и задаче из книги.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования