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

Форум PHP

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

 

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

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

тема: Замена смайлов на картинки
 
 автор: zlordon   (13.06.2006 в 00:25)   письмо автору
 
 

Доброго времени суток.

Помогите плиз решить задачу. Есть текст:

"
Привет :-) Как дела? ;-) Ты здесь? 8-) Ау!!! :-(
"

Каждому смайлу соотвествует свой код <img src=....

Проблема в том, что замену нужно производить в данном примере только 3-х первых смайлов.

Подскажите пожалуйста как это можно реализовать :-)

   
 
 автор: safe_mod   (13.06.2006 в 07:42)   письмо автору
 
   для: zlordon   (13.06.2006 в 00:25)
 


$text = str_replace("htmlspecialchars(:-))", "<img src=\"images/файл\">", $text);
$text = это текст который выводиться на экран

функция str_replace заменяет одно значение на другое, в нашем случаи это замена текстовых смайлов на графические

   
 
 автор: komex   (13.06.2006 в 10:54)   письмо автору
 
   для: safe_mod   (13.06.2006 в 07:42)
 

По-моему лучше поместить все доступные смайлики в один массив, а названия картинок поместить в другой. Например:

<?
$str 
"Some text =)";//Текст, в котором будет производиться замена
$from = array("=)""=(");//Эти смайлы будут заменены на картинки
$to = array("happy.gif""sad.gif");//Названия картинок
$end str_replace($from"<img src='<путь к картинкам>/".$to."'>"$str);
echo 
$end//Теперь в переменной $end будет "Some text <img src='img/happy.gif'>"
?>

   
 
 автор: zlordon   (13.06.2006 в 19:20)   письмо автору
 
   для: zlordon   (13.06.2006 в 00:25)
 

Эх как я не старался... но все же видимо проблему описал недостаточно прозрачно. Попробую еще раз.

Есть текст:

- Привет :-) Как дела? :-) Ты дома? :-) А я на Луне :-) Ау!!! Что молчишь? :-)

Так вот. Из всех смайлов мне нужно заменить первые скажем три. А последние оставить в TXT виде. Прошу заметить!, все смайлы в данном примере одинаковые, но так же могут быть различными и каждому смайлу соответствует отдельный GIF, но в тексте должно быть не более 3-х замен:

- Привет <img...> Как дела? <img...> Ты дома? <img...> А я на Луне :-) Ау!!! Что молчишь? :-)

В общем в моих сообщениях должно появляться не более определенного числа замен на картинки.

   
 
 автор: komex   (13.06.2006 в 19:47)   письмо автору
 
   для: zlordon   (13.06.2006 в 19:20)
 

А зачем тебе именно первых 3? Заменяй все, которые есть! =)
А вообще подумать надо. Но по-моему лучше сделать как я написал, и ничего не усложнять.

   
 
 автор: zlordon   (14.06.2006 в 01:02)   письмо автору
 
   для: komex   (13.06.2006 в 19:47)
 

У меня WAP. Если скажем, например, в тексте сообщения будет порядка 10 различных смайлов... страница просто не прогрузится. Будет тяжела по килобайтам. потому надо это как-то предусмотреть.

   
 
 автор: komex   (14.06.2006 в 11:51)   письмо автору
 
   для: zlordon   (14.06.2006 в 01:02)
 

А ты сделай эти смайлики небольшого размера.
Просто по-моему получится ерунда, если 3 смайдика появятся, а остальные нет.
Ты куда хочешь вставить эти смайлы, в форум?
Может лучше тогда просто модерировать и тех, кто злоупотребляет картинками просто банить?

   
 
 автор: zlordon   (14.06.2006 в 13:32)   письмо автору
 
   для: komex   (14.06.2006 в 11:51)
 

Что-то вроде сайта знакомств. Точнее он самый. Несколько тысяч посетителей. Несколько сотен тысяч сообщений. Забодаюсь править и банить ))) А делать меньше по размеру... Ну в общем тоже не вариант. А на счет не серьезно то, что некторые будут в текстовом варианте... Ну это же Вап. В нем все еще много ограничений, так что это терпимо :) На экране выдается по 4 сообщения, так что думаю если смайлы будут только в последнем или, то это только порадует пользователей. Плюс еще трафик экономить. Так что. Бу думать :)

   
 
 автор: komex   (14.06.2006 в 14:02)   письмо автору
 
   для: zlordon   (14.06.2006 в 13:32)
 

А не многовато для WAP сайта "Несколько сотен тысяч сообщений"? =)
Попробуй сделать как сказал Trianon, может получится.

   
 
 автор: Trianon   (14.06.2006 в 11:55)   письмо автору
 
   для: zlordon   (14.06.2006 в 01:02)
 

В php 5.0 и выше количество замен str_replace можно ограничить.
Можно также найти 4-е вхождение <img в строку и выполнить обратную замену.
Немного дольше, но проблему решит.

   
 
 автор: zlordon   (14.06.2006 в 13:34)   письмо автору
 
   для: Trianon   (14.06.2006 в 11:55)
 

5-го увы нет. Буду пробовать иные варианты. Спасибо.

   
 
 автор: sLim80   (14.06.2006 в 14:07)   письмо автору
 
   для: zlordon   (14.06.2006 в 13:34)
 

<?
print "<html>\n<body>\n<form>\n";

$i=0//счётчик вхождений подстроки $ts
$tt "- Привет :-) Как дела? :-) Ты дома? :-) А я на Луне :-) Ау!!! Что молчишь? :-)";
$ts=":-)"//подстрока для поиска

print "Оригинал: ".$tt."<br>"//оригинальная строка

while ($i<3//чтоб меняло только 3 раза
{
$i++;//увеличиваем
if (strpos($tt,$ts)) //если есть подстрока в нужной нам строке

$tt=substr($tt,0,strpos($tt,$ts)).[b]"img"[/b].substr($tt,strpos($tt,$ts)+3,strlen($tt)-strpos($tt,$ts)); //собственно замена
}
//print "$tt<br>"; //вывод после каждой замены (для проверки)
}

print 
"Получили: ".$tt//вот и полученная строка

print "</form>\n</body>\n</html>";
?>



Вот наваял примерчик. Посмотри. Если я тебя правильно понял, то должно работать.
PS img замени на ту строку, на которую будешь менять.

PPS Если обрабатывать разные смайлы, то код немного усложнится.

   
Rambler's Top100
вверх

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