Обработка смайликов

 
+
-
edit
 

Balancer

администратор
★★★★★
Пока версия сырая (невылизанная), но вполне работоспособная.

Делает замену смайликов вида  :) :D :mad: на
:):D:mad:
 
и т.п. (Сами смайлики не прилагаются :D )

Идея модуля такая.

Есть отдельный каталог со смайликами (задаётся в глобальной переменной $cms_smilies_dir, ей соответствует URL в глобальной переменной $cms_smilies_url). Все смайлики вида :
Для традиционных сокращений смайликов в том же каталоге есть файл list.txt, в котором в каждой строчке записаны пары
например:
code text
  1. :-) smile
  2. :) smile
  3. ;-) wink
  4. ;) wink
  5. :-D biggrin
  6. :D biggrin
  7. %) icon_rol
  8. %-) icon_rol
 
+
-
edit
 

Balancer

администратор
★★★★★
Исходник
Прикреплённые файлы:
 
 
+
-
edit
 

Balancer

администратор
★★★★★
Текст
code php
  1. <?
  2.     // Smilies processing
  3.     // Global vars:
  4.     // $GLOBALS['cms_smilies_dir'] - full path to smilies dir
  5.     // $GLOBALS['cms_smilies_url'] - full or relative url of smilies dir
  6.     //
  7.     // (c) Balancer 2003-2004
  8.  
  9.     function lcml_smilies($txt)
  10.     {
  11.         $smilies=@file($GLOBALS['cms_smilies_dir']."/list.txt");
  12.         for($i=0;$i<sizeof($smilies);$i++)
  13.         {
  14.             $spl=split(" ",chop($smilies[$i]));
  15.             $spl[]="";
  16.             list($code,$file)=$spl;
  17.             if(!$file)
  18.             {
  19.                 $txt=preg_replace("!([^\"]):$code:([^\"])!","$1<img src=\"{$GLOBALS['cms_smilies_url']}/$code.gif\" alt=\":$code:\" title=\":$code:\" border=\"0\">$2",$txt);
  20.             }
  21.             else
  22.             {
  23.                 $from=array("/\(/","/\)/","/\[/","/\]/","/\-/","/\*/","/\+/","/\./","/\?/","/\|/","/\!/");
  24.                 $to=array("\\\(","\\\)","\\\[","\\\]","\\\-","\\\*","\\\+","\\\/","\\\?","\\\|","\\\!");
  25.                 $txt=preg_replace("!(^|\s)".preg_replace($from,$to,$code)."(?=(\s|$|\)|\]|\.))!","$1<img src=\"{$GLOBALS['cms_smilies_url']}/$file.gif\" alt=\"$code\" title=\"$code\" border=\"0\">",$txt);
  26.             }
  27.         }
  28.  
  29.         $txt=lcml_smilies_load($GLOBALS['cms_smilies_dir'],$txt);
  30.  
  31.         return $txt;
  32.     }
  33.  
  34.     function lcml_smilies_load($dir,$txt)
  35.     {
  36.         if(is_dir($dir))
  37.         {
  38.             if($dh = opendir($dir))
  39.             {
  40.                 while(($file = readdir($dh)) !== false)
  41.                 {
  42.                     if(substr($file,-4)=='.gif')
  43.                     {
  44.                         $code=substr($file,0,-4);
  45.                         $txt=preg_replace("!(^|[^\"]):$code:!","$1<img src=\"{$GLOBALS['cms_smilies_url']}/$code.gif\" alt=\":$code:\" title=\":$code:\" border=\"0\">",$txt);
  46.                     }
  47.                     elseif(filetype("$dir/$file")=='dir' && substr($file,0,1)!='.')
  48.                     {
  49.                         $txt=lcml_smilies_load("$dir/$file",$txt);
  50.                     }
  51.                 }
  52.                 closedir($dh);
  53.             }
  54.         }
  55.         return $txt;
  56.     }
  57.  
  58.     $txt = lcml_smilies($txt);
  59. ?>
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru