Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> заменить в строчьне не более n смайликов 
:(
    Опции темы
Elfet
  Дата 20.12.2004, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



ну вообщем есть строчька со смайлами " :-) ............... :Р ............ 8-) ................:-)............... ;)....... "
как можно заменить в ней не более n смайликов на <img> , а остальные оставить без изменений?
smile

Это сообщение отредактировал(а) Elfet - 20.12.2004, 20:01


--------------------
PM MAIL WWW Skype   Вверх
penizillin
Дата 20.12.2004, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



считать (вслух).
PM MAIL ICQ   Вверх
Opik
Дата 20.12.2004, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Это JS:
Код

<script LANGUAGE="JavaScript">
var maxsmiles = 3;
for (i=0; i < sm.length; i+=3) {
  while(txt.indexOf(':'+sm[i]+':') >= 0) {
   txt = txt.replace(':'+sm[i]+':', '<img src=" '+sm[i]+'.gif">');
   if (++j >= maxsmiles) break;
  }
  if (j>=maxsmiles) break;
 }
</script>

где sm - массив, со смайлами...

Это сообщение отредактировал(а) Opr - 20.12.2004, 21:44
PM MAIL Skype   Вверх
$дмитрий
Дата 20.12.2004, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



а это РНР smile

Код

$undo_smiles = ':( . .. ... ...... :D dswdd ,;, ;) sdsd s ';
$smiles = array(':(((',':((',':(',':)',':D',':?','8)','8|',';)',':e',':0',':|',':opss',':p',':help',':$');
$scr_smiles = array('6','4','10','0','1','2','3','5','7','8','9','11','12','13','14','15');
$sos  =  $undo_smiles;
$d=0;
for($z=0; $z< count($smiles); $z++)
{
if($d >= 3) break; else
{
$undo_smiles = str_replace("$smiles[$z]"," <img src=smiles/$scr_smiles[$z].gif border=0> ",$undo_smiles);
}
if($sos != $undo_smiles) {
$d++;
$sos = $undo_smiles;
}
}
echo $undo_smiles;


замени 3 на свою цифру!
PM MAIL   Вверх
IZ@TOP
Дата 21.12.2004, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



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


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
$дмитрий
Дата 21.12.2004, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



IZ@TOP
блин точно! надо че- то придумать!

Это сообщение отредактировал(а) $дмитрий - 21.12.2004, 01:40
PM MAIL   Вверх
IZ@TOP
Дата 21.12.2004, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



$дмитрий, strpos? Хотя это не выход. Надо наверное preg_replace_callback юзать.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.12.2004, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PHP:
Код

$sm = array("lol", "lol2", "lol3", "lol4");
$txt = ":lol: :lol2: :lol3: :lol4:";
$maxsmiles = 3;
for ($i=0; $i < sizeof($sm)-1; $i++) {
 $txt = str_replace(':'.$sm[$i].':', '<img src="'.$sm[$i].'.gif">', $txt);
  if ($i == $maxsmiles) break;

}
print $txt;

PM MAIL Skype   Вверх
penizillin
Дата 21.12.2004, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



обратите внимание на то, что, хоть переменная $maxsmiles равна 3, вы заменяете четыре смайла, если $sm будет больше.

Это сообщение отредактировал(а) penizillin - 21.12.2004, 19:08
PM MAIL ICQ   Вверх
Opik
Дата 21.12.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



penizillin
ну и меняется 3, 4 это для проверки, что после 3-ех замен, оная замена больше не осуществляется...
PM MAIL Skype   Вверх
Alx
Дата 21.12.2004, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Opr
хороший код!
никогда не приходило в голову, чтоб в for использовать break
smile


--------------------
PM MAIL WWW ICQ   Вверх
Elfet
Дата 21.12.2004, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Opr, а если в строке идут одинаковые смайлики, штук десять, оба твои кода из заменят как я понял smile

Цитата(Opr @ 21.12.2004, 18:27)
Код

Цитата
Код

Цитата(Opr @ 20.12.2004, 22:44)
Код

все эти три кода ограничивуют только количество используемых видов смайликов, а мне другое нада smile


--------------------
PM MAIL WWW Skype   Вверх
Opik
Дата 21.12.2004, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Не видов, а всего smile
Добавлено @ 21:41
ALEXANDRO
Можно ещё continue использовать
PM MAIL Skype   Вверх
Opik
Дата 21.12.2004, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Вообщем в коде всё равно есть недочеты smile
PM MAIL Skype   Вверх
IZ@TOP
Дата 21.12.2004, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Да, если у меня в сообщении подряд smile smile smile smile smile smile smile smile смайликов, то он их заменит все, даже если ограничение стоит в 3 смайла smile
Надо придумать как это обойти. Давайте подумаем вместе. Этакое задание, кто лучше сделает, плюсик будет.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1756 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.