помогите с регуляркой никак не осилю

Тема в разделе "PHP", создана пользователем Juri, 6 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    есть строка, например "dgdg sdfgdfg dgsdgsdfg dsfgsdfg"

    в ней нужно все пробелы заменить на + как это сделать?

    нашел такое решение, но почему то не работает

    Код:
    
    $actr= "ffdsfd sdfsdf sdfsdf";
    $actr = preg_replace("'([\r\n])[\s]+'", "+", $actr);

    заранее спасибо
     
  2. ario3001

    ario3001 Создатель

    Регистр.:
    3 май 2009
    Сообщения:
    16
    Симпатии:
    2
  3. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Можно так:
    PHP:
    $actr"ffdsfd sdfsdf sdfsdf";
    $actr preg_replace("/ +/""+"$actr);
    А чем str_replace не понравился?
    $actr = str_replace(" ", "+", $actr);
     
  4. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Видимо потому, что автор не сказал, но имел в виду, что ряд идущих подрят пробелов надо, тоже заменить одним плюсом :)
    Если делать str_replace'ом, то придется сначало убрать повторяющиеся пробелы. А в отличии от perl'а, в php нет такой готовой функции как chomp, так-то :D
     
  5. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    так?
    PHP:
    $actr "ffdsfd    sdfsdf           sdfsdf";
    $actr preg_replace("#([ ]+)#""+"$actr);
     
  6. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Квадратные и круглые скобки можно и нужно отпустить:
    PHP:
    $actr "ffdsfd    sdfsdf           sdfsdf";
    $actr preg_replace('# +#''+'$actr);  
    Если нужны все пробельные символы - в т.ч. табуляция, переводы строк - тогда:
    PHP:
    $actr "ffdsfd    sdfsdf           sdfsdf";
    $actr preg_replace('#\s+#''+'$actr);  
     
  7. xzorro

    xzorro Писатель

    Регистр.:
    21 мар 2008
    Сообщения:
    8
    Симпатии:
    2
    preg_replace('/[ ]+/', '+', $actr)

    preg_replace('#\s+#', '+', $actr); - еще и вводы попортит
     
  8. [Гилыч]

    [Гилыч] Постоялец

    Регистр.:
    5 авг 2008
    Сообщения:
    57
    Симпатии:
    17
    если уж табуляции и переводы строк фиксить, но не трогать все спецсимволы то...
    PHP:
    preg_replace("/\ |\t|\n|\r/si""+"$actr);
     
  9. lorien

    lorien Постоялец

    Регистр.:
    2 авг 2006
    Сообщения:
    84
    Симпатии:
    11
    А так покрасивше, имхо. Ну и i флаг не нужен. Кстати, разве \s метасимвол не решает эту задачу?
    PHP:
    preg_replace("/[ \t\n\r]/s""+"$actr);
     
  10. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Конечно решает:), о чем уже писалось. И флаг s тоже не нужен.
     
Статус темы:
Закрыта.