2

誰でも私がこれを行うのを助けることができますか?

たとえば、私はの文字列を持っています

SOME of the STRINGS are in CAPITAL Letters

出力に正確に欲しいのは

Some of the Strings are in Capital Letters

大文字のみが最初の文字を大文字にし、残りは小文字のままにします。

PHPを使用してこれを達成するにはどうすればよいですか?

前もって感謝します。

4

5 に答える 5

3

preg_replace_callbackすべての大文字の単語を検索し、それらをカスタムコールバック関数に置き換えるために使用できます

于 2012-09-28T13:18:13.167 に答える
3

簡単な例:

$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," ");

出力:

一部の文字列は大文字です

于 2012-09-28T13:26:59.460 に答える
1

正規表現を避けたい場合

$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;
于 2012-09-28T13:34:46.223 に答える
1

あなたが使用することができ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
于 2012-09-28T13:25:22.660 に答える
0

答えてくれてありがとう、本当に役に立ちました、そしてそれは私にアイデアを与えてくれます。私もpreg_replaceを使用しており、それを必要とする可能性のある人にも共有しています。

preg_replace('/([A-Z])([A-Z ]+)/se', '"\\1" . strtolower("\\2")', $str);

また

preg_replace('/([?!]{2})([?!]+)/', '\1', $str);
于 2012-09-28T13:33:00.830 に答える