Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Замена :smile: на смайлик


Автор: Штык 7.4.2006, 08:36
собсьвенно вопрос в сабже..пишу чат.. имееться скрипт который выводит смайлы
Код

$dir=opendir("smiles");
$file=readdir($dir);
$file=readdir($dir);
$i=0;
while(($file=readdir($dir))!==false)
{
 $i++;
 $st=explode(".",$file);
 echo(" <img src='smiles/".$file."' onclick='InsertSmile(\"".$st[0]."\")'");
 if($i==6){echo("<br>");$i=0;}
}


при нажатии смайлик как и везде заведено копируеться в input а вот терь вопрос как лучше обработать сообщение и вывести в сообщении на экран смайлик..то есть :smile: нужно заменить на <IMG SRC='smile.gif'>..пробую так

Код

$msg=ereg_replace(":".$name.":","<IMG SRC='".$name.".gif'>",$message_array['message']);

но при таком подходе приходиться опять читать директорию со смайлами и сравнивать имя файла $name с тем что введено.. вопросик как можно без этого обойтись?

Автор: R.M. 7.4.2006, 08:58
А ты запиши в базу так
id | code | img
1 | :smile: | smile.gif
2 | :up: | up.gif

и т.д. а потом заменяй через str_replace

Автор: CyClon 7.4.2006, 10:24
Наварганил кое-что...

Код
<?php

$smiles = array("lol", "smile", "boom");

function check($string)
{
    global $smiles;
    if (in_array($string, $smiles)) {
        return "<img src=\"images/smiles/".$string.".gif\" width=\"15\" height=\"15\" border=\"0\">";
    } else {
        return ":".$string.":";
    }
}

$string = "I :lol: :fff:";

$string = preg_replace("#:(.+):#ieU", "check(\"\\1\")", $string);

echo $string;

?>

Автор: Штык 7.4.2006, 10:41
всем огроиное спс =)
у мя только воть другой вопросик терь возникаеть так как чат юзает AJAX и результат выполнения скрипта возвращаеться в виде XML, то не получаеться передать текст с тегами..то есть все что входит в <..>..</..>
считаеться новым блоком..
то есть получаеться след структура
Код

<message id="160">
<user>roman</user>
<color>ff0000</color>
<msg_color>00ff00</msg_color>
-
    <text>
<img src="smiles/bye.gif"/>
</text>
<time>11:31</time>
</message>


а нужно

Код

<message id="161">
<user>roman</user>
<color>ff0000</color>
<msg_color>00ff00</msg_color>
<text>test</text>
<time>11:37</time>
</message>


как вариант сделать аналог bb кодов а потом на JavaScript обработать скобки есть ли в JS аналог str_replace?

ЗЫ: ссори что вопрос немного в другую сторону увел..


Все разобрался вопрос исчерпан всем огромное спс;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)