0

そのため、入力可能なテキスト領域 (スペースで区切られた単語) を含む Web ページを作成する必要があります。

その結果、テキストのすべての単語 (1 行に 1 単語) を画面に表示する必要があり、処理中の単語の最初の文字が大文字の場合を除き、すべての単語の大文字が小文字に変換されます。

例: 「tHIs は StacKOverFlOW サイトです」は、「これは Stackoverflow サイトです」となります。

私は、explode()、strotoupper()、strotolower() を使用する必要があることを知っていますが、コードを機能させることができません。

4

3 に答える 3

2
function lower_tail($str) {
    return $str[0].strtolower(substr($str, 1));
}

$sentence = "tHIs is the StacKOverFlOW SiTE";
$new_sentence = implode(' ', array_map('lower_tail', explode(' ', $sentence)));

アップデート:

他のいくつかの状況を処理するより良いバージョンを次に示します。

$sentence = "Is tHIs, the StacKOverFlOW SiTE?\n(I doN'T know) [A.C.R.O.N.Y.M] 3AM";
$new_sentence = preg_replace_callback(
    "/(?<=\b\w)(['\w]+)/",
    function($matches) { return strtolower($matches[1]); },
    $sentence);
echo $new_sentence; 
// Is this, the Stackoverflow Site?
// (I don't know) [A.C.R.O.N.Y.M] 3am
// OUTPUT OF OLD VERSION:
// Is this, the Stackoverflow Site?
// (i don't know) [a.c.r.o.n.y.m] 3am

(注: PHP 5.3+)

于 2013-10-01T21:46:06.330 に答える
1
$text = 'tHIs is the StacKOverFlOW SiTE';
$oldWords = explode(' ', $text);
$newWords = array();

foreach ($oldWords as $word) {
    if ($word[0] == strtoupper($word[0])
        $word = ucfirst(strtolower($word));
    else
        $word = strtolower($word);

    $newWords[] = $word;
}
于 2013-10-01T21:45:09.610 に答える
0

私はこのように書くだろう

$tabtext=explode(' ',$yourtext);
foreach($tabtext as $k=>$v)
{
    $tabtext[$k]=substr($v,0,1).strtolower(substr($v,1));
}
$yourtext=implode(' ',$tabtext);
于 2013-10-01T21:46:14.867 に答える