我有数千个字符串,我想正确地将它们大写
默认字符串大写可以更改 “第二次世界大战” - > “第二次世界大战”
或
“usa” - > “美国” 它还有其他任何一种智能资本化解决方案吗?
答案 0 :(得分:4)
我不确定为什么你的问题被低估了。无论如何,请参阅以下功能并根据您的要求进行调整
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;
}
最初提及@ here
希望这会有所帮助。干杯!
答案 1 :(得分:0)