文字列の前後から任意の文字数をPHP関数『mb_substr』と『mb_strlen』を使って削除する方法

文字列の前後から任意の文字数をPHP関数『mb_substr』と『mb_strlen』を使って削除する方法

こんにちわ。昨夜『DAYZ』というPCゲームの実況にハマって中々眠れなかったTAKA(@web_creativelab)です。

今回は、文字列を表示させるときに任意の文字数を削除する方法をご紹介します。
PHPの関数を使っていますが簡単に前後の文字を消すことができます。

『mb_substr』関数と『mb_strlen』関数を使う方法

僕はWordpressのカテゴリー名の頭に数字をつけて表示の順序を管理しています。
しかし実際に表示するときにこの数字は不要です。
その為、この方法を用いて不要な数字を削除しています。

前から3文字を削除する場合

$text = "闇の炎に抱かれて消えろっ!"; //対象の文字列
$cut = 3; //カットしたい文字数
$processing = mb_substr($text, $cut, mb_strlen($text)-$cut, 'utf-8');
echo $processing; //実際の表示:に抱かれて消えろっ!

後ろから3文字を削除する場合

$text = "闇の炎に抱かれて消えろっ!"; //対象の文字列
$cut = 3; //カットしたい文字数
$processing = mb_substr($text, 0, mb_strlen($text)-$cut, 'utf-8');
echo $processing; //実際の表示:闇の炎に抱かれて消え

以上、「難しいことはいいからとにかく文字を消したい!」という方は上記をコピペして必要に応じて値などを変えていただければ大丈夫です(僕も最初はそうでした)
もし詳しい説明が必要な方はGoogle先生に聞けば詳細を知ることができます。
また、自分なりに少しまとめてみたのでご興味のある方は以下をどうぞ。

備考

『mb_substr』関数と『substr』関数の違い

文字の消し方について調べてみると『mb_substr』関数のほかに『substr』関数というPHP関数を使っている場合もあります。
この2つの違いは日本語(2バイト文字)に対応しているか、していないかの違いです。
『mb_substr』関数は日本語(2バイト文字)に対応しています。
「え、じゃあ『mb_substr』関数だけで十分じゃん!」と思う方もいるかと思いますが、2つの関数には以下の違いがあります。

$text = mb_substr("パラメータ1", "パラメータ2", "パラメータ3", "パラメータ4");
$text = substr("パラメータ1", "パラメータ2", "パラメータ3");
パラメータ1
(文字列)
パラメータ2
(開始位置)
パラメータ3
(文字数)
パラメータ4
(文字コード)
mb_substr 必須 必須 必須 ほぼ必須
substr 必須 必須 任意

上記の通り『substr』関数はコードを短くできます。
また英語のみのサイト(2バイト文字を使わない)の場合は『mb_substr』関数をわざわざ使う必要はないです。

ただ、個人的には、混乱するので統一して『mb_substr』関数だけを使っていれば良いと思っています。

『mb_substr』関数と『mb_strlen』関数の本来の使い方

今回は前後の文字数を消すために『mb_substr』関数と『mb_strlen』関数を少し応用して一緒に使いました。
当初、僕はこの2つの関数の意味を知らないで使っていたので簡単に使い方を記載しておきます。

『mb_substr』関数について

『mb_substr』関数は、文字列から任意の部分を切り出すものです。
詳細については以下リンク先にまとめられています。

tabsmb_substr:文字数を指定して文字列を取り出す[PHP Webリファレンス]

『mb_strlen』関数について

『mb_strlen』関数は、文字列の文字数をカウントするものです。
詳細については以下リンク先にまとめられています。

tabsPHP 文字列の文字数をカウントするstrlen,mb_strlenの使い方 [Web Development Blog]

以上、最後は丸投げしましたが、任意の文字数を削除して表示する方法でした。