mb_strimwidth

関数の概要

mb_strimwidth は、マルチバイト文字列の表示幅を考慮して文字列を切り詰めるためのPHP関数です。指定した幅を超える部分を省略し、省略記号(省略文字列)を付加することができます。特に日本語など全角文字を含む文字列に対して、視覚的な表示幅を制御したい場合に便利です。

パラメータの説明

  • string $str : 切り詰めたい元の文字列。
  • int $start : 切り出し開始位置の表示幅(バイト数ではなく表示幅)を指定します。通常は0から開始します。
  • int $width : 切り詰め後の最大表示幅を指定します。全角文字は幅2、半角文字は幅1として計算されます。
  • string $trimmarker(省略可): 文字列を切り詰めた際に末尾に付加する省略記号。デフォルトは空文字(省略なし)です。
  • string|null $encoding(省略可): 文字エンコーディングを指定します。指定しない場合は内部エンコーディングが使用されます。

戻り値

元の文字列を幅によって切り詰めた結果の文字列を返します。切り詰める必要がなければ元の文字列がそのまま返されます。

使用例

基本的な使い方

<?php
$text = "こんにちは、世界!";
$result = mb_strimwidth($text, 0, 8, "…", "UTF-8");
echo $result; // こんにち…
?>

この例では、表示幅8まで文字列を切り詰め、省略記号に「…」を付けています。日本語の全角文字は幅2として計算されるため、「こんにちは」は幅10で収まらず、省略されています。

開始位置をずらした例

<?php
$text = "プログラミング言語";
$result = mb_strimwidth($text, 2, 10, "...", "UTF-8");
echo $result; // グラミング言...
?>

開始幅を2に指定することで、「プ」(幅2)を飛ばして文字列の途中から切り詰めを開始しています。

省略記号なしで切り詰め

<?php
$text = "データベース管理";
$result = mb_strimwidth($text, 0, 6, "", "UTF-8");
echo $result; // データ
?>

省略記号を空文字にして表示幅6まで切り詰めています。切り詰めたことがわかるようにしたい場合は省略記号を指定しましょう。

関連する関数

  • mb_substr – 文字数単位でマルチバイト文字列を切り出す
  • mb_strlen – マルチバイト文字列の文字数を取得する
  • mb_strwidth – 文字列の表示幅を取得する

まとめ

mb_strimwidth は、マルチバイト文字列の表示幅を考慮して文字列を適切に省略したい場合に最適な関数です。特に日本語のような全角文字が混在する文脈で、画面表示や印刷レイアウトの調整に役立ちます。引数で省略記号や開始位置も指定できるため、用途に応じて柔軟に利用可能です。ぜひ実務でも活用してください。