|
|
|
| Горю идеей сделать у себя в форме ответа что-то вроде BB и смайликов.
как это реализовать?
Я так понимаю при получении текста сообщения из БД заменять там тэги смайлов например :smile: на путь до картинки? как реализовать эту замену, и когда лучше ее проводить при отправке сообщения или при воспроизведении? | |
|
|
|
|
|
|
|
для: Равечка
(11.08.2006 в 17:09)
| | есть еще вариант: при отображении на клиентской стороне. Средствами JS. | |
|
|
|
|
|
|
|
для: Равечка
(11.08.2006 в 17:09)
| | Определяем для простоты константу каталога где будем хранить смайлы.
<?
define("_SMILES_DIR",$_SERVER['DOCUMET_ROOT'].'/path/to/smile/dir/');
?>
| В этот каталог кладём смайлы с любыми именами.
Далее пишем функцию которая юудет читать каталог и выводить все смайлы оттуда
<?
function smilesList(){
$dir = _SMILES_DIR;
$ret = '';
if($dh = opendir($dir)) {
while(($file = readdir($dh)) !== false) {
list($name,$ext) = explode(".",$file);
if($ext == 'gif')
$ret .= '<img src="'._SMILES_DIR.$file.'" onclick=addSmile(":'.$name.':")>';
}
}
return $ret;
}
?>
| Здесь есть JS функция addSmile добавления смайла в поле редактирования. Но её несложно найти в сети, если не найдёте, у меня где-то была, поищу...
И перед тем как вывести текст со смайлом, заменяем псевдотег смайла :some: на картинку some.gif
<?
$str = 'какое-то сообщение форума со :lol: смайлом';
function replaceSmiles($str){
$pattern="|:([\w]*):|is";
$replace = '<img src="'._SMILES_DIR.'\\1.gif>';
return preg_replace($pattern,$replace,$str);
}
echo replaceSmiles($str);
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(11.08.2006 в 17:41)
| | все обыскала не могу найти JS Addsmile =( | |
|
|
|
|
|
|
|
для: Равечка
(11.08.2006 в 20:29)
| |
<script>
function addsmile(name,id) {
e1 = document.getElementById(id);
e1.focus();
var formData = document.selection.createRange().text;
document.selection.createRange().text = ' :'+name+': ';
}
</script>
|
Пример использования:
<?
function smilesList(){
$dir = _SMILES_DIR;
$ret = '';
if($dh = opendir($dir)) {
while(($file = readdir($dh)) !== false) {
list($name,$ext) = explode(".",$file);
if($ext == 'gif')
$ret .= '<img src="'._SMILES_DIR.$file.'" onclick=addSmile("'.$name.'","message")>';
}
}
return $ret;
}
?>
<tr>
<td><textarea id="message" name="message"></textarea></td>
</tr>
<tr>
<td><?=smilesList()?></td>
</tr>
|
| |
|
|
|
|
|
|
|
для: Axxil
(11.08.2006 в 21:07)
| | спасибо огромное.
а ББ тэги я так поняла простым реплейсом парсить? | |
|
|
|
|
|
|
|
для: Равечка
(12.08.2006 в 00:02)
| | Что то типа такого:
<?php
$tag = 'b';
$pattern = '|\['.$tag.'\]([^\[]*)\[/'.$tag.'\]|is';
$replace = '<'.$tag.'>\\1</'.$tag.'>';
$str = preg_replace($pattern,$replace,$str);
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(12.08.2006 в 00:09)
| | вот готовый
<?
$emsg = preg_replace("#\[br\]#si", "<br />", $emsg);
$emsg = preg_replace("#\[hr\]#si", "<hr noshade color=\"#000000\" size=\"1\">", $emsg);
$emsg = preg_replace("#\[b\](.*?)\[/b\]#si", "<span style=\"font-weight:bold\">\\1</span>", $emsg);
$emsg = preg_replace("#\[I\](.*?)\[/I\]#si", "<span style=\"font-style:italic\">\\1</span>", $emsg);
$emsg = preg_replace("#\[U\](.*?)\[/U\]#si", "<span style=\"text-decoration:underline\">\\1</span>", $emsg);
$emsg = preg_replace("#\[s\](.*?)\[/s\]#si", "<s>\\1</s>", $emsg);
$emsg = preg_replace("#\[big\](.*?)\[/big\]#si", "<big>\\1</big>", $emsg);
$emsg = preg_replace("#\[small\](.*?)\[/big\]#si", "<small>\\1</big>", $emsg);
$emsg = preg_replace("#\[pre\](.*?)\[/pre\]#si", "<pre>\\1</pre>", $emsg);
$emsg = preg_replace("#\[sub\](.*?)\[/sub\]#si", "<sub>\\1</sub>", $emsg);
$emsg = preg_replace("#\[sup\](.*?)\[/sup\]#si", "<sup>\\1</sup>", $emsg);
$emsg = preg_replace("#\[table\](.*?)\[/table\]#si", "<table>\\1</table>", $emsg);
$emsg = preg_replace("#\[tr\](.*?)\[/tr\]#si", "<tr>\\1</tr>", $emsg);
$emsg = preg_replace("#\[td\](.*?)\[/td\]#si", "<td>\\1</td>", $emsg);
$emsg = preg_replace("#\[move\](.*?)\[/move\]#si", "<marquee>\\1</marquee>", $emsg);
$emsg = preg_replace("#\[coment\](.*?)\[/coment\]#si", "<span class=artnamenote>Коментарий;</span>\n<br />\n<p class=artnote>\\1</p>", $emsg);
$emsg = preg_replace("#\[google\](.*?)\[/google\]#si", "<a href=\"http://www.google.com/search?q=\\1\" target=\"_blank\"><span style=\"font-weight:bold; color:#575CCA\">≡Google≡</span></a>", $emsg);
$emsg = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'<img src=\"\\1' . str_replace(' ', '%20', '\\3') . '\">'", $emsg);
$emsg = preg_replace("#\[left\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/left\]#sie", "'<img src=\"\\1\\3\" align=\"left\">'", $emsg);
$emsg = preg_replace("#\[right\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/right\]#sie", "'<img src=\"\\1\\3\" align=\"right\">'", $emsg);
$emsg = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si", "<a class=\"links\" target=\"_blank\" href=\"\\1\">\\2</a>", $emsg);
$emsg = preg_replace("#\[url\](.*?)\[/url\]#si", "<a class=\"links\" target=\"_blank\" href=\"\\1\">\\1</a>", $emsg);
$emsg = preg_replace("#\[ftp=(.*?)\](.*?)\[/ftp\]#si", "<a class=\"links\" target=\"_blank\" href=\"\\1\">\\2</a>", $emsg);
$emsg = preg_replace("#\[ftp\](.*?)\[/ftp\]#si", "<a class=\"links\" target=\"_blank\" href=\"\\1\">\\1</a>", $emsg);
$emsg = preg_replace("#\[align=(left|right|center|justify)\](.*?)\[/align\]#si", "<div style=\"text-align:\\1\">\\2</div>", $emsg);
$emsg = preg_replace("#\[marq=(left|right|up|down)\](.*?)\[/marq\]#si", "<marquee direction=\"\\1\" scrolldelay=\"120\">\\2</marquee>", $emsg);
$emsg = preg_replace("#\[glow=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/glow\]#si", "<span style=\"filter: glow(color=\\1); height:20\">\\2</span>", $emsg);
$emsg = preg_replace("#\[shadow=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/shadow\]#si", "<span style=\"filter: shadow(color=\\1); height:20\">\\2</span>", $emsg);
$emsg = preg_replace("#\[highlight=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/highlight\]#si", "<span style=\"background-color:\\1\">\\2</span>", $emsg);
$emsg = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "<span style=\"color:\\1\">\\2</span>", $emsg);
$emsg = preg_replace("#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si", "<span style=\"font-size:\\1px; line-height:normal\">\\2</span>", $emsg);
$emsg = preg_replace("#\[font=(.*?)\](.*?)\[/font\]#si", "<span style=\"font-family:\\1\">\\2</span>", $emsg);
$emsg = preg_replace("#\[email](.*?)\[/email]#si", "<b><a href=\"mailto:\\1\">\\1</a></b>",$emsg);
$emsg = preg_replace("#\[email=(.*?)\](.*?)\[/email]#si", "<b><a href=\"mailto:\\1\">\\2</a></b>",$emsg);
?>
|
| |
|
|
|
|