- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
...
$str = preg_replace ( array_keys ( $new ), array_values ( $new ), $str );
$str = trim ( $str );
$str = str_replace ( " ", "_", $str );
$str = str_replace ( " ", "_", $str );
$str = str_replace ( " ", "_", $str );
$str = str_replace ( " ", "_", $str );
$str = str_replace ( " ", "_", $str );
$str = str_replace ( " ", "_", $str );
$str = str_replace ( " ", "_", $str );
Одна строка
если уж совсем сохранить функционал:
$str = preg_replace('/ {1,7}/', '_', $str);
или если упростить:
$str = preg_replace('/ +/', '_', $str);
Хотя, автор кода шёл от 7 до 1, а Vladiator - от 1 до бесконечности, это немного в другую сторону.
пробелов бы не осталось, но было бы много _________________
Именно в этой части Vladiator неправ, поскольку на первой же итерации пробелы бы кончились :)
Вот если б он пошёл от бесконечной строки с пробелами...
$str = preg_replace ( array_keys ( $new ), array_values ( $new ), $str );
а с пробелами что-то лоханулся
Пример для малых чисел: http://ideone.com/1KaaRe
С вынесением алгоритма проверки достаточности в аргумент: http://ideone.com/Z3VzJz
Код не только никогда не завершится, но благодяря использованию рекурсии он так же и php процесс положит. А если повезет и сервак криво сконфигурирован - то и сервак посвопит несколько минут. В добавок, все это теперь оформлено в удобную переиспользуемую функцию, которую можно вызывать откуда угодно.
>>> '_'.join("1 2 3 4".split())
'1_2_3_4'
> табуляции тоже порежет
Да я специально... Не думаю, что они там особо нужны.
наркоманы же. На руби порядок наоборот:
"1 2 3 4".split().join('_')
Какой это имеет смысл:
?
Конечно можно для всех элементов применить __str__()...