現在の位置: ホーム> 最新記事一覧> UCWords関数を使用して、スペースと句読点を含む長い文字列を変更して、理想的な症例効果を達成する方法は?

UCWords関数を使用して、スペースと句読点を含む長い文字列を変更して、理想的な症例効果を達成する方法は?

M66 2025-06-22

PHPでは、 UCWords関数は、文字列内の各単語の最初の文字を大文字に変換するために使用される一般的な方法です。そのデフォルトの動作は、スペースごとに単語を分離することですが、 UCWordsは、文字列に句読点または他の非アルファベット文字が含まれている場合、理想的なケース効果を達成できない場合があります。この記事では、他の手法と組み合わせてUCWordsを使用して、スペースと句読点を含む長い文字列を処理して、より正確なケース変換を実現する方法について説明します。

1。UCWordsの基本的な使用

UCWordsは、スペースで区切られた単語の最初の文字のみを大文字にします。例えば:

 <?php
$str = "hello world! this is php.";
echo ucwords($str);
?>

出力:

 Hello World! This Is Php.

ご覧のとおり、句読点に続く文字も正しく処理されますが、Stringにハイフンやアポストロフィなどの他の句読点が含まれている場合、 UCWordsは自動的に処理しません。

2。UCWORDSの2番目のパラメーター-Word分離器(PHP 5.4+)を定義する

PHP 5.4から、 UCWords関数は2番目のパラメーターをサポートして、Word Separatorsとして使用される文字を定義します。例えば:

 <?php
$str = "jack-o'-lantern's day";
echo ucwords($str, " -'");
?>

出力:

 Jack-O'-Lantern'S Day

ここでは、スペース、ハイフンアポストロフィがデリミターとして指定されているため、各デリミッターの後の最初の文字も大文字に変換されます。

3.正規表現を組み合わせて、より柔軟なケース変換を実現する

文字列構造が複雑で、 ucwordsのみに依存している場合、各単語の最初の文字を正規表現と組み合わせて変換できます。

 <?php
$str = "this is a complex-string, isn't it? yes!";

$callback = function ($matches) {
    return strtoupper($matches[1]) . strtolower(substr($matches[0], 1));
};

$result = preg_replace_callback('/\b\w/u', $callback, $str);

echo $result;
?>

出力:

 This Is A Complex-String, Isn't It? Yes!

このコードは、 preg_replace_callbackを使用して、大文字の変換用の各単語の最初の文字を見つけ、残りの文字を保証します。

4。完全な例: UCWordsとカスタムセパレーターの組み合わせ

<?php
$str = "welcome to the m66.net-php tutorial, let's learn ucwords!";

echo ucwords($str, " -'");

?>

出力: