誰でも私がこれを行うのを助けることができますか?
たとえば、私はの文字列を持っています
SOME of the STRINGS are in CAPITAL Letters
出力に正確に欲しいのは
Some of the Strings are in Capital Letters
大文字のみが最初の文字を大文字にし、残りは小文字のままにします。
PHPを使用してこれを達成するにはどうすればよいですか?
前もって感謝します。
誰でも私がこれを行うのを助けることができますか?
たとえば、私はの文字列を持っています
SOME of the STRINGS are in CAPITAL Letters
出力に正確に欲しいのは
Some of the Strings are in Capital Letters
大文字のみが最初の文字を大文字にし、残りは小文字のままにします。
PHPを使用してこれを達成するにはどうすればよいですか?
前もって感謝します。
preg_replace_callback
すべての大文字の単語を検索し、それらをカスタムコールバック関数に置き換えるために使用できます
簡単な例:
$input = "SOME of the STRINGS are in CAPITAL Letters";
$words = explode(" ",$input);
$output = array();
foreach($words as $word)
{
if (ctype_upper($word)) $output[] = $word[0].strtolower(substr($word,1));
else $output[] = $word;
}
$output = implode($output," ");
出力:
一部の文字列は大文字です
正規表現を避けたい場合
$text = "SOME of the STRINGS are in CAPITAL Letters";
$str_parts = explode(" ", $text);
foreach ($str_parts as $key => $str_part)
{
if (ctype_upper($str_part) == strtolower(substr($str_part,1)))
{
$str_parts[$key] = ucfirst(strtolower($str_part));;
}
}
$text = implode($str_parts, " ");
echo $text;
あなたが使用することができstrtolower
ますucwords
$word = "SOME of the STRINGS are in CAPITAL Letters";
echo ucwords(strtolower($word));
出力
Some Of The Strings Are In Capital Letters
あなたが説明したとおりにそれをしたい場合
$word = "SOME of the STRINGS are in CAPITAL Letters";
$word = explode(" ", $word);
$word = array_map(function ($word) {return (ctype_upper($word)) ? ucwords(strtolower($word)) : $word;}, $word);
echo implode(" ", $word);
出力
Some of the Strings are in Capital Letters
答えてくれてありがとう、本当に役に立ちました、そしてそれは私にアイデアを与えてくれます。私もpreg_replaceを使用しており、それを必要とする可能性のある人にも共有しています。
preg_replace('/([A-Z])([A-Z ]+)/se', '"\\1" . strtolower("\\2")', $str);
また
preg_replace('/([?!]{2})([?!]+)/', '\1', $str);