PHP | mb_strimwidth()で文字列を指定文字数で丸めて…を追加する方法

2020-06-22PHP 文字列,PHP

mb_strimwidth()で文字列を指定文字数で丸めて…を追加する方法

PHPのmb_strimwidth()を使って、文字列を指定文字数で丸めて、末尾に三点リーダー(…)を追加する方法の紹介です。

mb_strimwidth()の基本サンプル

mb_strimwidth(文字列. 開始位置, 文字数, 追加文字, エンコート※省略可)

mb_strimwidth()は文字列を指定した開始位置から指定文字数で丸める・切り出すことができる関数で、第4引数に末尾に追加する文字または文字列を指定することが可能です。

指定文字数は追加する文字または文字列の分も含んでいます。
例えば文字列「abcde」追加文字「!」を指定文字数「3」で実行した場合の結果は「abc!」ではなく「ab!」になります。

また、指定する文字数は、日本語を含むマルチバイト文字は2文字としてカウントされます。

文字列を指定文字数で丸めて三点リーダー(…)を追加する

$text = 'こんにちは、世界';
echo mb_strimwidth($text, 0, 10, '…');

//こんにち…

日本語を含むマルチバイト文字は2文字としてカウントされますので、「10」で指定した場合「…」分を引いた「8」で丸められ、全てマルチバイト文字なので4文字分の「こんにち」が丸められていることになります。

mb_strimwidth()が文字化けする場合

mb_strimwidth()の処理結果が文字化けしてしまう場合は、第5引数に文字エンコードを指定することで回避可能です。

外部から取得した文字のエンコードやスクリプトファイルのエンコードにもよるかと思いますが、概ねはUTF-8を指定することで文字化けは回避できると思います。

最初からUTF-8を指定しておいた方が無難です。

$text = 'こんにちは、世界';
echo mb_strimwidth($text, 0, 10, '…', 'utf8');

//こんにち…

2020-06-22PHP 文字列,PHP

Posted by Yousuke.U