PHPで文字数制限の方法 WordPressの本文末で「…」加工に

eyecatch_513

問題点

PHPで文字数制限をしたい。
また、WordPressなどのウィジェットなどでよく使われる、タイトルや本文の末尾に「…」も付けたい。

スポンサーリンク

PHPで文字数制限をする方法

PHPの文字数制限の種類

PHPで文字数制限をかけるには、substr()とmb_substr()があります。
違いは下記のようになります。

  • substr()は、バイト数でカウント。
  • mb_substr()は、マルチバイト数でカウント。

substr()とmb_substr()の特徴

バイト数とマルチバイト数の違いは、プログラムする人はこれで、すぐに違うはわかるかと思いますが、プログラムを普段しない方にはピンとこないかもしれません。バイト数というのは、半角文字で「abc」これで3バイトになります。日本語の全角文字などは、1文字2バイトになるので、「あいう」これで6バイトになります。

マルチバイトの場合は、半角文字でも全角文字でも1バイトとしてカウントされます。そのため、マルチバイトで計算すると「abc」は変わらず3バイト、「あいう」はマルチバイトだと3バイトということになります。

日本語を含む文字数制限する場合は、マルチバイトの方が深く考えなくてもよいので、mb_substr()の方が楽に使えます。また、substr()で日本語の文字数を制限かけると問題が発生します。例えば、「abcあいう」をsubstr()で4バイトで制限をかけると、「abc̻■」のような文字化けになります。日本語の2バイトのうちの1バイト使用した場合は、文字が壊れて文字化けが発生縞sう。

mb_substr()の構文

mb_substr('変更前の文字列' , 始点 ,終点);

「変更前の文字列」は、文字数制限をされる文字列を入れます。プログラムで使うときは変数を入れます。

「始点」と「終点」は文字数制限をかけるマルチバイトのバイト数の始点と終点となります。

mb_substr()のサンプルソース

文字列の最初は0バイトとなりますので、ご注意ください。

■サンプルソース

$str= '変更前の文字列';
echo mb_substr($str , 1 ,4);

■実行結果

更前の文

WordPressの本文末で「…」加工につける方法

テーマやウィジェットなどの開発時によく、記事のタイトルや本文を文字数制限をして、最後に「…」とよくすると思いますが、その方法です。もちろんその前に、カテゴリーやタグから記事リストの取得など、いろいろすることはあると思いますが、そのあたりは、また記事にしようかと思います。

■記事タイトルに文字数制限して「…」

mb_substr(get_the_title() ,0 , 40, 'UTF-8').'…';

■記事本文末に文字数制限「…」

mb_substr(get_the_excerpt() ,0 , 30, 'UTF-8').'…';

オススメ記事