За последние 24 часа нас посетили 17745 программистов и 1283 робота. Сейчас ищут 1478 программистов ...

Убрать слова менее N букв

Тема в разделе "Регулярные выражения", создана пользователем FishErr, 19 окт 2007.

  1. FishErr

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

    С нами с:
    6 июл 2007
    Сообщения:
    25
    Симпатии:
    0
    1)

    Надо убрать из текста слова <= wordLen символов
    PHP:
    1.  
    2. $text=preg_replace ("/(?<=\s)[\w]{0".$wordLen."}(?=\s)/", '', $text );
    3.  
    как можно добавить в позиционные проверки проверку на начало строки и конец?
    в моем случае не срабатывает на первом и последнем слове

    текст состоит уже из "слово1 слово2 слово3 слово4" то есть только \w\s


    PS может есть функция какаято, чтоб не использовать регулярку?[/php]
     
  2. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2. $text = preg_replace ("/\b\w{0,".$wordLen."}\b/", '', $text );
    3. ?>
     
  3. FishErr

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

    С нами с:
    6 июл 2007
    Сообщения:
    25
    Симпатии:
    0
    Да, спасибо, уже сделал так :)
    "осенило" что просто надо по-другому.
    ну ничего, первый блин комом:) первый раз с регулярками..
     
  4. +Sten+

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

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    Как-нибудь вот так можно:

    PHP:
    1.  
    2.  
    3. <?php
    4.  
    5. $text = "слово1 слово2 слово3 слово4 слово5 длинноесловокотороенадоудалить ещеоднодлинноеслово";
    6. $wordLen = 12;
    7.  
    8. $words = explode(" ", $text);
    9. foreach($words as $key => $value){
    10.  if(strlen($value) > $wordLen) $errorWords[] = $value;
    11. }
    12. $text = str_replace($errorWords, "", $text);
    13.  
    14. print $text;
    15.  
    16. ?>
    17.  
    18.  
     
  5. FishErr

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

    С нами с:
    6 июл 2007
    Сообщения:
    25
    Симпатии:
    0
    А что предпочтительнее с точки зрения скорости, системных ресурсов? если текст из 3 сотен слов скажем ..
    И вообще есть какието рекомендации когда лучше использовать регулярку, когда просто различные строковые функции?
    может есть какаято статейка, а то я уже "распробовал" регулярки и вот теперь леплю их куда может и не следует.
     
  6. shreck

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

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Насколько я знаю, без регулярных выражений работает быстрее