Функция PHP для преобразования строки абзаца ALL CAPS в обычный регистр? - PullRequest
1 голос
/ 21 марта 2011

Я нахожусь в поиске скоростной функции, которая получит строку в качестве параметра и примет этот ввод:

LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT. SUSPENDISSE ET QUAM
EU LACUS SCELERISQUE GRAVIDA. DONEC PELLENTESQUE DICTUM DOLOR VEL PULVINAR.
NUNC RHONCUS, ERAT EU SUSCIPIT ALIQUET, RISUS NUNC DICTUM MAGNA, AC ALIQUAM
NIBH NULLA EGET DOLOR. SUSPENDISSE POTENTI. MAECENAS ULLAMCORPER DIAM NON URNA
VEHICULA ET ULTRICIES TURPIS INTERDUM. PHASELLUS INTERDUM MAGNA ET EROS CURSUS
TRISTIQUE.

И вернет этот вывод:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse et quam
eu lacus scelerisque gravida. Donec pellentesque dictum dolor vel pulvinar.
Nunc rhoncus, erat eu suscipit aliquet, risus nunc dictum magna, ac aliquam
nibh nulla eget dolor. Suspendisse potenti. Maecenas ullamcorper diam non urna
vehicula et ultricies turpis interdum. Phasellus interdum magna et eros cursus
tristique.

Любойзнаете о существующем?Попытка не воссоздать колесо, если мне не нужно.

Ответы [ 3 ]

8 голосов
/ 21 марта 2011

Ну, это приходит на ум:

$sentences = array_map('ucfirst',
             array_map('trim',
             array_map('strtolower', explode('.', $input))));
$output = implode('. ', $sentences).'.';

Не дурак или ужасно эффективен, но это даст вам 98% пути.Вы можете бросить (части) свои собственные, по своему усмотрению, торговые усилия для настройки / эффективности.

Обновление: В исходном ответе была ошибка: explode оставил пробел наначало каждой строки, в которой затем произошел сбой ucfirst, поскольку первый символ был пробелом.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * trim * * * * * * * * * * * * * * * * * * * * * * *1010* * * * * * * * * * * * * * * * * * * * *1010*.

Я также добавил конечный . к выводу.

1 голос
/ 21 марта 2011

Другое решение, прямо из руководства :

function ucfirst_sentence($str)
{
    return preg_replace('/\b(\w)/e', 'strtoupper("$1")', $str);
}

$text = strtowlower($initialText);
echo ucfirst_sentence($text);
0 голосов
/ 21 марта 2011

Просто используйте strotolower ($ string) ;

Не обращайте внимания, не видели, что вам нужен регистр предложений.

Будьте осторожны с этим, поскольку не все периоды должны иметь заглавную букву после них (например, паузы ...), или вы можете преобразовать имена / имена существительные и т. Д. В строчные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...