【PHP】文字列の文字数を数える,同じ文字を繰り返す,1文字ずつに分割したい

PHP PHP
※横にスクロールします。

文字列の文字数を数える  strlen()


$strings = "aaaiaaa";
$aiueo = "あああいあああ";


echo strlen($strings);//7 と出力
echo strlen($aiueo);//21 と出力

アルファベットの場合は正常に測定できますが、日本語は3文字としてカウントされてしまいました。

 

指定した文字が文字列の中にいくつあるのか調べる mb_substr_count()

 

例えば、ある文字列からその文字列の1番目の文字がいくつあるのか調べたい場合。


$strings = "aaaiaaa";

$ichimojime = substr($strings,0,1);//$ichimojimeに$stringsの1文字目を代入
echo mb_substr_count($strings,$ichimojime);//6 と出力

↑のsubstr()の引数は、$stringsの0番目から1文字をと指定しています。

同じ文字を繰り返す  str_repeat()

引数の最初に繰り返したい文字列2番目に繰り返す回数を入力します。



echo str_repeat('隣の客はよく柿食う客だ!'.PHP_EOL,10);
//出力
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!
隣の客はよく柿食う客だ!

引数に変数や関数を入れても大丈夫です。

1文字ずつに分割したい  str_split()

文字列をバラバラにしたい!ときはstr_split()



$pi = '3.141592653589793238462643383279';

$pi_nums = str_split($pi);

print_r($pi_nums);
Array
(
    [0] => 3
    [1] => .
    [2] => 1
    [3] => 4
    [4] => 1
    [5] => 5
    [6] => 9
    [7] => 2
    [8] => 6
    [9] => 5
    [10] => 3
    [11] => 5
    [12] => 8
    [13] => 9
    [14] => 7
    [15] => 9
    [16] => 3
    [17] => 2
    [18] => 3
    [19] => 8
    [20] => 4
    [21] => 6
    [22] => 2
    [23] => 6
    [24] => 4
    [25] => 3
    [26] => 3
    [27] => 8
    [28] => 3
    [29] => 2
    [30] => 7
    [31] => 9
)

1文字ずつ分割され、配列に納めてもらえます。

ただし、日本語は1文字が3文字とカウントされるようなので、、



$name = '工藤俊作';

$namae_kanji = str_split($name,3);

print_r($namae_kanji);
Array
(
    [0] => 工
    [1] => 藤
    [2] => 俊
    [3] => 作
)

引数に分割する文字の数を設定する必要があります。

コメント