За последние 24 часа нас посетили 16864 программиста и 1292 робота. Сейчас ищут 1480 программистов ...

Смайлы в тексте

Тема в разделе "PHP для новичков", создана пользователем Колбася, 7 июн 2014.

  1. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    как ограничить написание смайлов в тексте? скажем только 3 смайла на 1 сообщение все остальные смайлы удаляются... как это сделать?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Javascript-ом парсить при вводе, на стороне сервера пхп.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Считать их количество и сравнивать с 3?
     
  4. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    $text = preg_replace($textsmile, $smileimg, $text, 3);
     
  5. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Как посчитать количество сделанных preg_replace ов тут ?

    Добавлено спустя 38 минут 37 секунд:
    подскажите как посчитать количество вхождений с помошью preg_match или preg_match_all тут.
    Соль в том что нужно чтобы прег реплейс после 3 раза перестал изменять в тексте коды смайлов на изображения и они удалялись дальше тоесть смайлов только 3
    Так вот как сделать условие с прег матч алл как это описать чтобы она считала до 3 ?
     
  6. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
  7. Linda_Ginger

    Linda_Ginger Новичок

    С нами с:
    10 июн 2014
    Сообщения:
    6
    Симпатии:
    0
    Я бы сделала удаление лишних смайлов с помощью примерно такого кода:

    Код (Text):
    1.  
    2.  
    3. $maxSmiliesNumber = 3; // задаем макс допустимое кол-во смайлов
    4.  
    5. // задаём набор смайликов и шаблоны для замены
    6. $arrSmiles = array(
    7.     ":)" => "---001---",
    8.     ":(" => "---002---",
    9.     ":p" => "---003---"
    10. );
    11.  
    12. $text = .... ; // тут будет обрабатываемый текст
    13.  
    14. $totalNumberSmilesReplaced = 0; // будем считать количество замененных смайлов
    15.  
    16. while ($totalNumberSmilesReplaced < $maxSmiliesNumber) {
    17.     // заменяем первые Х смайликов на шаблоны
    18.     foreach ($arrSmiliers as $smile => $replace) { // заменяем по 1 смайлику каждого вида
    19.         $countOfSmilesReplaced = 0
    20.         $text = preg_replace($smile, $replace, $text, 1, $countOfSmilesReplaced); // заменяем 1 смайлик
    21.         $totalNumberSmilesReplaced += $countOfSmilesReplaced;
    22.         if ($totalNumberSmilesReplaced < $maxSmiliesNumber) continue; // если ещё можно заменять смайлики, продолжаем
    23.         break;
    24.     }
    25. }
    26.  
    27. // удаляем оставшиеся смайлики
    28. foreach ($arrSmiliers as $smile => $replace) {
    29.     $text = str_replace($smile, '', $text);
    30. }
    31.  
    32. // заменяем шаблоны обратно на смайлики
    33. foreach ($arrSmiliers as $smile => $replace) {
    34.     $text = preg_replace($replace, $smile, $text);
    35. }
    В этом коде надо ещё предусмотреть случай, если смайликов в тексте меньше, чем $maxSmiliesNumber, чтобы не получилось бесконечного цикла.