Заменить несколько - PHP

Возможный дубликат:
PHP Preg-Replace more чем одно подчеркивание

Привет, мне просто интересно, как я могу заменить 2 или более - знаков в строке только одним в PHP.

Так нравится

1-2---3--4

пошел бы в

1-2-3-4

Спасибо :)


person Belgin Fish    schedule 05.02.2010    source источник
comment
Это дубликат stackoverflow. ком/вопросы/1729500/   -  person soulmerge    schedule 05.02.2010


Ответы (2)


Используйте preg_replace:

$str = preg_replace('/-+/', '-', $str);
person Tatu Ulmanen    schedule 05.02.2010
comment
или лучше $str = preg_replace('/-{2,}/', '-', $str); - person raveren; 05.02.2010
comment
@Reveren Разве это не пропустило бы --- в середине строки? - person Neil Aitken; 05.02.2010
comment
Ну, технически это уменьшило бы количество замен, но ИМХО разница незначительна, а /-+/ намного чище :) - person Tatu Ulmanen; 05.02.2010
comment
@ Нил Эйткен, нет, {2,} означает «не менее двух символов». - person Tatu Ulmanen; 05.02.2010

Не нужно регулярное выражение

$text="1-2---3--4";
$s = implode("-",array_filter ( explode("-",$text) )) ;
print_r($s);
person ghostdog74    schedule 05.02.2010
comment
Внедрение в массив, а затем обратное соединение со строкой не является более ясным и эффективным, чем версия RegEx. - person kennytm; 05.02.2010
comment
если это то, что вы думаете. Но не я. - person ghostdog74; 05.02.2010