Правильная капитализация строк

У меня есть тысячи строк, я хочу правильно их использовать

Капитализация строки по умолчанию может измениться
«Вторая мировая война» -> «Первая мировая война»

или же

«usa» -> «Usa», есть ли какое-нибудь другое решение для умной капитализации?

-3

Решение

Я не уверен, почему ваш вопрос опущен. В любом случае, пожалуйста, ознакомьтесь с приведенной ниже функцией и настройте ее в соответствии с вашими требованиями.

function titleCase($string)
{
$word_splitters = array(' ', '-', "O'", "L'", "D'", 'St.', 'Mc');
$lowercase_exceptions = array('the', 'van', 'den', 'von', 'und', 'der', 'de', 'da', 'of', 'and', "l'", "d'");
$uppercase_exceptions = array('III', 'IV', 'VI', 'VII', 'VIII', 'IX');

$string = strtolower($string);
foreach ($word_splitters as $delimiter)
{
$words = explode($delimiter, $string);
$newwords = array();
foreach ($words as $word)
{
if (in_array(strtoupper($word), $uppercase_exceptions))
$word = strtoupper($word);
else
if (!in_array($word, $lowercase_exceptions))
$word = ucfirst($word);

$newwords[] = $word;
}

if (in_array(strtolower($delimiter), $lowercase_exceptions))
$delimiter = strtolower($delimiter);

$string = join($delimiter, $newwords);
}
return $string;
}

Первоначально упоминается @ Вот

Надеюсь это поможет. Ура!

4

Другие решения

Я думаю, что вы можете использовать функцию PHP ucwords

string ucwords ( string $str [, string $delimiters = " \t\r\n\f\v" ] )

Надеюсь это поможет

0

По вопросам рекламы [email protected]