2

文字列には2つのタイプがありhelloますhelloThere

私が欲しいのは、それらが次のように読めるように変更することです:HelloそしてHello There場合によっては。

これを行うための良い方法は何でしょうか?

4

8 に答える 8

7

キャメルケースを別の単語に変換するには:

preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string)

すべての単語の最初の文字を大文字にするには:

ucwords()

一緒に:

ucwords(preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string))
于 2010-08-05T14:52:48.000 に答える
5

ucwords次の関数を使用します。

文字がアルファベットの場合、strの各単語の最初の文字を大文字にした文字列を返します。

単語の定義は、空白の直後にある任意の文字列です(これらは、スペース、フォームフィード、改行、キャリッジリターン、水平タブ、および垂直タブです)。

これにより、非難された単語が分割されることはありません。この関数を機能させるには、必要に応じて文字列にスペースを追加する必要があります。

于 2010-08-05T14:49:12.140 に答える
4

ucwords次の関数を使用します。

echo ucwords('hello world');
于 2010-08-05T14:50:37.530 に答える
1

PHPには多くの文字列操作関数があります。ucfirst()あなたのためにそれをします。

http://ca3.php.net/manual/en/function.ucfirst.php

于 2010-08-05T14:49:49.457 に答える
1

あなたはucwordsみんなが言ったように使うことができます...あなたにスペースを追加するためにそれからhelloThereすることができます$with_space = preg_replace('/[A-Z]/'," $0",$string);ucwords($with_space);

于 2010-08-05T14:53:55.680 に答える
1

ucwordsを使用する

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

$bar = 'BONJOUR TOUT LE MONDE!';
$bar = ucwords($bar);             // HELLO WORLD
$bar = ucwords(strtolower($bar)); // Hello World
?>
于 2010-08-05T14:56:43.210 に答える
1

Shureを他の言語で動作させるには、UTF-8を実装することをお勧めします。私はワードプレスのインストールですべての言語にこの防水を使用しています。

$str = mb_ucfirst($str, 'UTF-8', true);

これにより、最初の文字が大文字になり、他のすべての文字が小文字になります。3番目の引数がfalse(デフォルト)に設定されている場合、文字列の残りの部分は操作されません。ただし、ここで誰かが、関数自体を再利用し、最初の単語の後に各単語をmb大文字にして、質問に対するより正確な答えにするための引数を提案する場合があります。

// Extends PHP
if (!function_exists('mb_ucfirst')) {

function mb_ucfirst($str, $encoding = "UTF-8", $lower_str_end = false) {
    $first_letter = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding);
    $str_end = "";
    if ($lower_str_end) {
        $str_end = mb_strtolower(mb_substr($str, 1, mb_strlen($str, $encoding), $encoding), $encoding);
    } else {
        $str_end = mb_substr($str, 1, mb_strlen($str, $encoding), $encoding);
    }
    $str = $first_letter . $str_end;
    return $str;
}

}

/ランドマン

于 2013-11-27T14:19:50.580 に答える
0

単語の間にスペースを挿入するために文字をキャプチャする必要はありません。先読みがうまく機能します。次に、スペースを追加した後、マルチバイトセーフなタイトルケース関数を適用します。

コード:(デモ

echo mb_convert_case(
         preg_replace('~(?=\p{Lu})~u', ' ','helloThere'),
         MB_CASE_TITLE
     );
// Hello There
于 2021-08-13T15:43:42.407 に答える