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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Подсветка синтаксиса HTML

Сообщения:  [1-3] 

 
 автор: JIEXA   (19.03.2005 в 18:40)   письмо автору
 
   для: cheops   (19.03.2005 в 18:36)
 

сенкс

   
 
 автор: cheops   (19.03.2005 в 18:36)   письмо автору
 
   для: JIEXA   (19.03.2005 в 17:32)
 

Это код следует оформить в виде функции light() и использовать функцию преобразования тэгов, например, из нашего форума LiteForum
<?php
function post_work_up($postbody)
{
    
// Обрабатываем теги [html], [/html]
    
$lastocc = 0;
    
$sndocc = 1;
    
$result = "";
    while(
$sndocc)
    {
      
$fstocc = strpos($postbody,"[html]",$lastocc);
      
$sndocc = strpos($postbody,"[/html]",$fstocc);
      if((
$fstocc>0 && $sndocc>0 && $lastocc>0) || ($fstocc >= 0 && $sndocc>0 && $lastocc == 0))
      {
        
$result .= nl2br(htmlspecialchars(substr($postbody,$lastocc,$fstocc - $lastocc)));
        
$result .= "<table border=0 ><tr><td class=codeblock>".light(substr($postbody,$fstocc + 6,$sndocc - $fstocc - 6))."</td></tr></table>";
        
$lastocc = $sndocc + 7;
      }
      else
      {
        
$result .= nl2br(htmlspecialchars(substr($postbody,$lastocc,strlen($postbody)-$lastocc)));
        break;
      }
    }
    return 
$result;
 }
?>

Функция принимает единственный параметр с тестом, содержащим тэги [html][/html] и возвращает уже текст, в котором выделенные блоки подсвечены.

   
 
 автор: JIEXA   (19.03.2005 в 17:32)   письмо автору
 
 

Ниже приведённый код, подсвечивает синтаксис хтмл кода. Как сделать, чтобы он подсвечевал только код находящийся в спец тегах [html][/html]
<?php
 $txt 
= str_replace( "<" , "&lt;"  , $txt);
 
$txt = str_replace( ">" , "&gt;"  , $txt);
 
$txt = str_replace( "\"", "&quot;", $txt);
 
$txt = preg_replace( "!&lt;\!--(.+?)(//)?--&gt;!s", "&#60;&#33;<span style='color:red'>--\\1--\\2</span>&#62;", $txt);
 
$txt = preg_replace( "#&lt;([^&<>]+)&gt;#s", "&lt;<span style='color:blue'>\\1</span>&gt;", $txt);
 
$txt = preg_replace( "#&lt;([^&<>]+)=#s", "&lt;<span style='color:blue'>\\1</span>=", $txt);
 
$txt = preg_replace( "#&lt;/([^&]+)&gt;#s", "&lt;/<span style='color:blue'>\\1</span>&gt;", $txt);
 
$txt = preg_replace( "!=(&quot;|')([^<>])(&quot;|')(\s|&gt;)!s", "=\\1<span style='color:purple'>\\2</span>\\3\\4", $txt);
 
$txt = str_replace( "\n", "<br>", str_replace("\r\n", "\n", $txt));
 print 
"<table border=0 ><tr><td class='code-html'><pre>".$txt."</pre></td></tr></table>";
?>

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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