Я попробую что-то вроде этого:
$string = join(
array_map(
function($s){
return ucfirst($s);
},
str_split($string,2)
)
);
или, как однострочный:
$string = join(array_map(function($s){return ucfirst($s);}, str_split($string,2)));
Вы можете обобщить функцию, передав в качестве параметра длину чанка, который должен быть написан с заглавной буквы, и позволяя функции выполнять работу. Алгоритм прост:
- str_split возвращает массив строк нужной длины,
- функция array_map добавляет преобразование в куски и
- соединение склеивает строки в результирующую строку.
Последняя функция:
function camelCycles($string, $period) {
return join(
array_map(
function($s){
return ucfirst($s);
},
str_split($string, $period)
)
);
}
Он использует только собственные конструкции и поэтому должен быть довольно быстрым.
РЕДАКТИРОВАТЬ:
Функция, которая не использует лямбда-выражение и поэтому подходит для PHP 5.0 и более поздних версий, поскольку str_split была введена в выпуске php5.
function camelCycles($string, $span) {
return join(array_map('ucfirst', str_split(strtolower($string), $span)));
}
person
Eineki
schedule
04.05.2011