こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 PHPで文字列の幅を取得することができるmb_strwidth関数について
- mb_strwidth関数とは
- mb_strwidth関数を使ったサンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
PHPのバージョン | 8.0.3 |
XAMPPのバージョン | 8.0.3 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
mb_strwidth関数とは
mb_strwidth関数とは、引数に指定された文字列の幅を返す関数です。
半角文字は1、全角文字は2として数えます。
mbはマルチバイトを意味しています。
mb_strwidth関数は使い方が
- パターン1:第一引数のみの場合
- パターン2:第二引数も指定した場合
の合計2パターンあります。
それぞれ解説します。
パターン1:第一引数のみの場合
第一引数のみの場合、第一引数の文字列の文字列の幅を返します。
使い方サンプルは以下です。
1 2 |
$sample = 'testテスト'; $result = mb_strwidth($sample); |
上記だと変数resultには「10」が返されます。
パターン2:第二引数も指定した場合
第二引数も指定した場合、第一引数の文字列は第二引数で指定した文字エンコーディングの文字列として文字列の幅を返します。
mb_strwidth関数のサンプルは以下になります。
1 2 |
$sample = 'testテスト'; $result = mb_strwidth($sample, 'UTF-8'); |
上記だと変数resultには「10」が返されます。
第二引数に指定できる文字エンコーディングでよく使われるものは
- UTF-8
- ASCII
- EUC-JP
- SJIS
の4種類です。
必要に応じて、第二引数は指定してください。
では、次の章で実際に使ってみます。
mb_strwidth関数を解説するプログラムの概要
mb_strwidth関数を解説するプログラムでは、文字としては同じであるが
- 全角の文字列
- 半角の文字列
の2種類文字列を用意してそれぞれの文字列に対して
- 文字エンコーディングを設定しない
- 文字エンコーディングを設定した
の2パターンでmb_strwidth関数を使って文字列の幅を取得し、結果を表示させます。
phpプログラムは
C:\xampp\htdocs
配下に、【mb_strwidth_sample.php】というファイル名で格納しています。
PHPサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php print('■mb_strwidth関数サンプルプログラム<br />'); $apple_en = 'apple'; $apple_jpn = 'APPLE'; print('・文字エンコーディングを設定しない場合<br />'); $result1 = mb_strwidth($apple_en); $result2 = mb_strwidth($apple_jpn); print($apple_en.'の幅:' .$result1.'<br />'); print($apple_jpn.'の幅:' .$result2.'<br />'); print('・文字エンコーディングを設定した場合<br />'); $result3 = mb_strwidth($apple_en, 'UTF-8'); $result4 = mb_strwidth($apple_jpn, 'UTF-8'); print($apple_en.'の幅:' .$result3.'<br />'); print($apple_jpn.'の幅:' .$result4.'<br />'); ?> |
実行結果
XAMPPを起動して、【http://localhost/mb_strwidth_sample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
同じ文字でも全角半角で異なった文字列の幅が取得できていることが確認できました。
まとめ:mb_strwidth関数を使ってみよう!
以上がmb_strwidth関数についての解説でした。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント