2

単語の最初の文字をすべて大文字にする方法が必要です。これは私がこれまでに得たもので、ほぼすべての文字列で機能しています...しかし、この「WELLNESS & RENOMME」では失敗します。

    // method in stringModify Class
    function capitalizeWords($words, $charList) {

    $capitalizeNext = true;

    for ($i = 0, $max = strlen($words); $i < $max; $i++) {
        if (strpos($charList, $words[$i]) !== false) {
            $`capitalizeNext` = true;
        } else if ($capitalizeNext) {
            $capitalizeNext = false;
            $words[$i] = strtoupper($words[$i]);
        }
    }

    return $words;
    }
    // Calling method
   $stringModify->capitalizeWords("WELLNESS & RENOMME", " -&");

誰かが私を助けてくれることを願っています...私は今1.5時間試しましたが、手がかりがありません. ヒントやヒントをお寄せいただきありがとうございます。

編集

ucwords() は区切り記号として " " を使用しますが、たとえば "-" も使用したいと考えています。

編集

解決策をありがとうございました。ここで朝の7時です。:D 目が覚めたときにどの解決策が一番好きかを見て、どの解決策を選んだかを教えてくれます。

編集

すべての関数が「wellness &Amp; Renomme」または「wellness & Renomme」を返しているようです。私のphp.iniの何かが台無しになっている可能性はありますか?

4

3 に答える 3

1
function cb($word){ return ucwords(strtolower($word[0])); }
var_dump(preg_replace_callback('@[A-z]+@i','cb','TESTING-TESTING / TESTING & TEST / testing*&^123!&%&*TEST'));
于 2010-03-13T06:06:20.773 に答える
1

あなたが何をしようとしているのか、私は混乱しています。PHP には既にucwords()これを実行できる関数があり、実行していることに違いは見られません...各単語の最初の文字を大文字にする場合、区切り記号は違いますか? 2 つの単語の間に「&」があることはまったく重要ですか?

編集:私は今理解していると思います。あなたが抱えている唯一の問題は、テキストがすべて大文字になっているため、テキストが大文字であると判断できないことだと思います。最初に小文字にするだけです。また、「次の文字」を完全に削除するように変更しましたが、不要でした。一致するものが見つかったら、次の文字を大文字に変更します。これを試して:

// method in stringModify Class
function capitalizeWords($words, $charList) {
    $words = strtolower($words); // lowercase everything that isn't capitalized
    for ($i = 0; $i < strlen($words); $i++) {
        if (strpos($charList, $words[$i]) !== false) $words[$i+1] = strtoupper($words[$i+1]);
    }
    return $words;
}
// Calling method
$stringModify->capitalizeWords("WELLNESS & RENOMME", " -&");
于 2010-03-13T05:25:50.730 に答える
0

すべての文の最初の文字を大文字に変換するには、次のコードを使用します。

元)

$string = strtolower($string);
echo preg_replace('/(^|[\.!?]"?\s+)([a-z])/e', '"$1" . ucfirst("$2")', $string); 
?>
于 2014-01-02T10:12:36.893 に答える