Изменение регистра (исключая первую букву)

Asar

Новичок
Изменение регистра (исключая первую букву)

Нужно перевести слова (от одного до трех-четырех) из верхнего регистра в нижний, исключая первую букву у первого слова. Т. е. сделать из "КИПИТ ЧАЙНИК" "Кипит чайник". Сам пока додумался только с помощью substr отрубить нужные мне символы (т. е. все, кроме первого), после чего над ними произвести strtolower.
Вопрос: есть ли еще какие-либо, более рациональные в данном случае варианты?
 

sokol

Zavolga.Net
Пример из мануала.

PHP:
<?php
$foo = 'hello world!';
$foo = ucfirst($foo);             // Hello world!

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar);             // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>
 

Tor

Новичок
те же яйца, как мне кажется
ща потестю, что быстрее :)
 

SelenIT

IT-лунатик :)
Tor
Для однократной замены нескольких сотен символов быстродействие в таких масштабах явно не принципиально. А запись гораздо короче и понятнее (ИМХО).
 

Asar

Новичок
Запись точно приятнее выглядит... Опять же, надо горизонты расширять по мере возможности...
 

Tor

Новичок
провел я тесты:

конструкция вида

PHP:
ucfirst(strtolower($str));
выполняется БЫСТРЕЕ чем

PHP:
substr($str,0,1) . strtolower(substr($str,1));
в среднем на 35%
зависимости результата от длины строки выявленно небыло
 

sokol

Zavolga.Net
Tor что вполне логично.
strtolower() в обоих вариантах занимает одно и тоже время, а вот второй substr() в твоем варианте будет выполняться медленнее чем ucfirst().
 
Сверху