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

Форум PHP

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

 

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

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

тема: Функция подстветки php-кода
 
 автор: antf   (02.10.2006 в 12:06)   письмо автору
 
 

Здравствуйте.
Вот моя собственная функция подстветки php-кода форума. Правильно ли она составлена?
<?
  
function forum_highlight_phpcode($post)
  {
    
preg_match_all("#\[php\](.+?)\[/php\]#is"$post$matches);
    if(!empty(
$matches[1]))
    {
      
$cnt count($matches[1]);
      for(
$i 0$i $cnt$i++)
      {
        
$replace $matches[1][$i];
        
$replace str_replace("<br />"""$matches[1][$i]);
        
$replace forum_htmlspecialchars_undo($replace);
        
$replace highlight_string($replacetrue);

        
$replace "<table class='ForPostsCodeTbl' cellpadding='0' cellspacing='0' border='0'>
                    <tr>
                      <td class='ForPostsCodeTD'>
{$replace}</td>
                    </tr>
                    </table>"
;
        
$post    str_replace("[php]".$matches[1][$i]."[/php]"$replace$post);
      }
    }
    return 
$post;
  }

  
//просто отменяет действие фукнции htmlspecialchars
  
function forum_htmlspecialchars_undo($str)
  {
    
$str str_replace("&amp;",  "&"$str);
    
$str str_replace("&quot;"'"'$str);
    
$str str_replace("&#039;""'"$str);
    
$str str_replace("&lt;",   "<"$str);
    
$str str_replace("&gt;",   ">"$str);
    return(
$str);
  }
?>


Пробовал заимствовать аналогичную функцию из LiteForum (модуль utils/utils.php, функция post_work_up), но не разобрался с ней до конца, быстрее написал свою функцию. У меня один вопрос: правильно ли я расшифровал названия переменных: fstocc (first occasion), scdocc (second occasion), endocc (end occasion). Occasion - вхождение, появление, проявление.

Заранее спасибо.

   
 
 автор: Саня   (02.10.2006 в 12:15)   письмо автору
 
   для: antf   (02.10.2006 в 12:06)
 

Функция highlight_string() подсвечивает только тот код, который находится между тегами <?php и ?> (а так же <? и <%).

   
 
 автор: cheops   (02.10.2006 в 12:20)   письмо автору
 
   для: antf   (02.10.2006 в 12:06)
 

В LiteForum используется втроенная в PHP функция подсветки кода highlight_string().

   
 
 автор: Crone   (02.10.2006 в 13:50)   письмо автору
 
   для: antf   (02.10.2006 в 12:06)
 

Если интересно - почитайте. http://php.spb.ru/php/regexp.html

   
Rambler's Top100
вверх

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