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

Форум PHP

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

 

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

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

тема: Замена смайлов на картинки

Сообщения:  [1-10]   [11-12] 

 
 автор: 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 Если обрабатывать разные смайлы, то код немного усложнится.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Есть текст:

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

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

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

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

   
 
 автор: 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'>"
?>

   

Сообщения:  [1-10]   [11-12] 

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

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