3

PHP を使用して、フォーム エントリを MySQL データベースに挿入します。ユーザーがテキストをすべて大文字で入力することがあります。最初の文字だけが大文字になるように変更する方法はありますか? ucwords(strtolower($word))最初の文字がまだ大文字になっていない場合、最初の文字を大文字にしたくないので、うまくいきません。

私の主な関心事は、人々が姓を提出するときです。ほとんどの人は正しく送信しますが、すべて大文字で送信する人もいます。すべて大文字の場合は と同じようucwords(strtolower($word))に機能するはずですが、誰かが自分の名前を として送信した場合De la Rosa、 に変更したくありませんDe La Rosa

4

3 に答える 3

6
<?php

function ucwordsreplace($matches) {
    return ucwords(strtolower($matches[0]));
}

$original = "some UPPERCASE words GO HERE";
$fixed = preg_replace_callback('/\b[A-Z]+\b/', "ucwordsreplace", $original);

echo $fixed; // some Uppercase words Go Here

正規表現は、完全に大文字 (両側に単語境界がある任意の数の大文字) の単語のみに一致し、これらのそれぞれを定義済みの関数に渡します。この関数は、最初の文字のみを大文字にした置換テキストを返します。

UPPERCA$E なども防止したい場合は、他の記号を正規表現に追加するか、小文字以外のすべての文字に一致させることもできます ([^a-z]の代わりに使用します[A-Z])。

于 2010-02-24T05:16:36.730 に答える
0

ucfirst(strtolower($word));

于 2010-02-24T06:08:54.663 に答える
0

あなたが示した機能は正しいと思います..

しかし、あなたの正確な要件は何ですか..

ucwords の使用例は次のとおりです。

<?php
$foo = 'hello world!';
$foo = ucwords($foo);             // Hello World! 

$bar = 'HELLO WORLD!';
$bar = ucwords($bar);             // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?> 

それ以外の場合は、文字列の最初のすべての文字を大文字にするのではなく、最初の文字だけを大文字にしたい場合は、ucfirst() 関数を試してください。

于 2010-02-24T05:23:09.557 に答える