文字列には2つのタイプがありhello
ますhelloThere
。
私が欲しいのは、それらが次のように読めるように変更することです:Hello
そしてHello There
場合によっては。
これを行うための良い方法は何でしょうか?
文字列には2つのタイプがありhello
ますhelloThere
。
私が欲しいのは、それらが次のように読めるように変更することです:Hello
そしてHello There
場合によっては。
これを行うための良い方法は何でしょうか?
キャメルケースを別の単語に変換するには:
preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string)
すべての単語の最初の文字を大文字にするには:
ucwords()
一緒に:
ucwords(preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string))
ucwords
次の関数を使用します。
文字がアルファベットの場合、strの各単語の最初の文字を大文字にした文字列を返します。
単語の定義は、空白の直後にある任意の文字列です(これらは、スペース、フォームフィード、改行、キャリッジリターン、水平タブ、および垂直タブです)。
これにより、非難された単語が分割されることはありません。この関数を機能させるには、必要に応じて文字列にスペースを追加する必要があります。
ucwords
次の関数を使用します。
echo ucwords('hello world');
PHPには多くの文字列操作関数があります。ucfirst()
あなたのためにそれをします。
あなたはucwords
みんなが言ったように使うことができます...あなたにスペースを追加するためにそれからhelloThere
することができます$with_space = preg_replace('/[A-Z]/'," $0",$string);
ucwords($with_space);
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
?>
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;
}
}
/ランドマン
単語の間にスペースを挿入するために文字をキャプチャする必要はありません。先読みがうまく機能します。次に、スペースを追加した後、マルチバイトセーフなタイトルケース関数を適用します。
コード:(デモ)
echo mb_convert_case(
preg_replace('~(?=\p{Lu})~u', ' ','helloThere'),
MB_CASE_TITLE
);
// Hello There