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

Статус
В этой теме нельзя размещать новые ответы.

Juri

Мой дом здесь!
Заблокирован
Регистрация
5 Окт 2007
Сообщения
1.064
Реакции
200
  • Автор темы
  • Заблокирован
  • #1
есть строка, например "dgdg sdfgdfg dgsdgsdfg dsfgsdfg"

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

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

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


заранее спасибо
 
Можно так:
PHP:
$actr= "ffdsfd sdfsdf sdfsdf";
$actr = preg_replace("/ +/", "+", $actr);
А чем str_replace не понравился?
$actr = str_replace(" ", "+", $actr);
 
$actr = str_replace(" ", "+", $actr);

Видимо потому, что автор не сказал, но имел в виду, что ряд идущих подрят пробелов надо, тоже заменить одним плюсом :)
Если делать str_replace'ом, то придется сначало убрать повторяющиеся пробелы. А в отличии от perl'а, в php нет такой готовой функции как chomp, так-то :D
 
так?
PHP:
$actr = "ffdsfd    sdfsdf           sdfsdf";
$actr = preg_replace("#([ ]+)#", "+", $actr);
 
Квадратные и круглые скобки можно и нужно отпустить:
PHP:
$actr = "ffdsfd    sdfsdf           sdfsdf";
$actr = preg_replace('# +#', '+', $actr);
Если нужны все пробельные символы - в т.ч. табуляция, переводы строк - тогда:
PHP:
$actr = "ffdsfd    sdfsdf           sdfsdf";
$actr = preg_replace('#\s+#', '+', $actr);
 
preg_replace('/[ ]+/', '+', $actr)

preg_replace('#\s+#', '+', $actr); - еще и вводы попортит
 
если уж табуляции и переводы строк фиксить, но не трогать все спецсимволы то...
PHP:
preg_replace("/\ |\t|\n|\r/si", "+", $actr);
 
если уж табуляции и переводы строк фиксить, но не трогать все спецсимволы то...
PHP:
preg_replace("/\ |\t|\n|\r/si", "+", $actr);

А так покрасивше, имхо. Ну и i флаг не нужен. Кстати, разве \s метасимвол не решает эту задачу?
PHP:
preg_replace("/[ \t\n\r]/s", "+", $actr);
 
Конечно решает:), о чем уже писалось. И флаг s тоже не нужен.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху