【PHP8.x】mb_strwidth関数の使い方

作成日: 更新日:

mb_strwidth関数は、マルチバイト文字列の表示幅を計算する関数です。この関数は、特に日本語のような全角文字と半角文字が混在する文字列において、その文字列がターミナルや固定幅の表示領域でどれくらいの幅を占めるかを知りたい場合に利用されます。一般的な文字数やバイト数を数える関数とは異なり、全角文字を2文字分の幅として、半角文字を1文字分の幅として換算し、文字列全体の表示幅を整数値で返します。

たとえば、「こんにちはPHP」という文字列の場合、「こんにちは」の全角文字がそれぞれ2文字分の幅、合計10文字分の幅となり、「PHP」の半角文字がそれぞれ1文字分の幅、合計3文字分の幅となるため、mb_strwidth関数は合計13という値を返します。これは、strlen()関数がバイト数を返し、mb_strlen()関数が文字数を返すのに対し、表示上の見え方を重視する点で大きく異なります。

この関数は、ターミナルアプリケーションでの文字列の整形や、固定幅のレポート出力、あるいはユーザーインターフェースで文字列が指定された領域に正確に収まるかを検証する際などに非常に役立ちます。引数として幅を計算したい文字列と、オプションでその文字列のエンコーディングを指定できます。エンコーディングが省略された場合は、PHPの内部エンコーディングが使用されます。これにより、様々な文字コードの文字列の表示幅を正確に管理することが可能です。

基本的な使い方

構文(syntax)

<?php
$string = "Hello, 世界";
$width = mb_strwidth($string);
?>

引数(parameters)

string $string, ?string $encoding = null

  • string $string: 文字列の幅を計算したい対象の文字列を指定します。
  • ?string $encoding = null: 文字列のエンコーディングを指定します。省略された場合は、内部エンコーディングが使用されます。

戻り値(return)

int

指定されたマルチバイト文字列の表示幅を整数で返します。

【PHP8.x】mb_strwidth関数の使い方 | いっしー@Webエンジニア