За последние 24 часа нас посетили 15653 программиста и 1552 робота. Сейчас ищут 869 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем czech, 9 июн 2008.

  1. czech

    czech Активный пользователь

    С нами с:
    27 ноя 2007
    Сообщения:
    24
    Симпатии:
    0
    скажем есть переменная
    $contents = "Супер!!!!!!"; - надо убрать больше одного знака вопроса
    или
    $contents = "Суперррр"; - надо убрать больше одного знака "р"
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Кощунство, имхо. Как такой скрипт отреагирует на слово "пассажир" ?
    Вообще все зависит от количества слов, от знаков.
    Если с примером для восклицательного знака, то
    PHP:
    1. <?php
    2. echo strtr($contents, Array("!" => ""));
    3. ?>
     
  3. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    czech, обьясни зачем надо. Может, и не надо вовсе?
     
  4. czech

    czech Активный пользователь

    С нами с:
    27 ноя 2007
    Сообщения:
    24
    Симпатии:
    0
    есть ограничение на минимальное количество знаков, и чтоб не добивали повторяющимися знаками - надо поставить проверку
     
  5. czech

    czech Активный пользователь

    С нами с:
    27 ноя 2007
    Сообщения:
    24
    Симпатии:
    0
    Kreker как видишь я специально написал $contents = "Суперррр"; больше двух повторяющих знаков, я понимаю что правописание не стоит проверять но чтоб было не более 2 повторяющихся подряд знаков
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    czech
    Можно попробовать обработать регулярным выражением, учитывая только повторяющиеся символы в конце.

    Но сделав несколько попыток мне так и не удалось получить регулярным выражением повторяющиеся символы.

    Видимо, придется пробегаться по слову, проверяя каждую букву...
     
  7. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    PHP:
    1. <?php
    2.     $str = 'Сссссууууууупппппппеееееерррррр!!!!!! SuuPpEEr!';
    3.     echo preg_replace('~(.)\1+~i', '\\1', $str);
    4. ?>
    Вывод:
    Код (Text):
    1. Супер! SuPEr!
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    эт руки не стого места растут...

    PHP:
    1. <?php
    2.  
    3. // 2008 (c) 440hz
    4. // замена всех повторяющихся символов на один
    5.  
    6. $in = 'Прррииивввеееттт!!!! Шиииирррррроккккка     Страна   МММаааяяя     РРРРРооооддННННаааЯЯЯЯЯ!!!!!';
    7. $pat = '/(.{1})\1*/i';
    8.  
    9. $out = preg_replace($pat,'$1',$in);
    10.  
    11. print("Source: [$in]\nTarget: [$out]\n");
    12.  
    13. ?>
    Код (Text):
    1.  
    2. hosting(440hz):~/php$>php sym.php
    3. Source: [Прррииивввеееттт!!!! Шиииирррррроккккка     Страна   МММаааяяя     РРРРРооооддННННаааЯЯЯЯЯ!!!!!]
    4. Target: [Привет! Широка Страна Мая РодНаЯ!]
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    NOmeR1
    зы. апаздал чуток...
    =)
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3. $content = "суперррррррр";
    4. preg_match('~^(.)*?((?:.)\1+)[\s]*$~is', $content, $matches);  
    5. echo str_replace($matches[2], '', $content);
    6. //супер
    7. ?>
    8.  
    Туповато, правда...

    Просто не дочитал вовремя мануал про \int
     
  11. Anonymous

    Anonymous Guest

    хз. Эта ваша функция похерит те слова, где есть удовоенная букса. Так что низачот обоим.
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Горбунов Олег
    это был просто пример. так сказать пАлет мысли.
    допиливать будет сам.

    p.s. галактико опасносте!
     
  13. czech

    czech Активный пользователь

    С нами с:
    27 ноя 2007
    Сообщения:
    24
    Симпатии:
    0
    Вот молоцы фсем СПАСИБО!!!