先日、Wordpress関数(テンプレートタグ)を使用した表示文字数の制限方法を解説しましたが、今回はPHPの関数を使用した表示文字数の制限方法を解説していきます。
WordPress関数(テンプレートタグ)やCSSを使用した表示文字数の制限方法は以下をご覧ください。
- 記事を抜粋表示する関数the_excerpt()の使い方とカスタマイズ方法【WordPress】
- wp_trim_wordsで記事のタイトルや本文の表示文字数を制限する方法【WordPress】
- CSSで複数行の文末を三点リーダーで省略表示する方法【CSS】
PHPの関数を使用した表示文字数を制限する方法
WordPressの場合は、Wordpress関数(テンプレートタグ)を使えば大体大丈夫なのですが、目的と合わなかったり、上手くいかない場合は以下のPHP関数を使用した方法を使ってみてください。
PHP関数を使用した方法は以下のようになります。
<?php
$post_content = strip_tags(get_the_content());
$excerpt_content = str_replace(array("\n", "\r\n"), '', $post_content);
$limit = '50';
if(mb_strlen($post_content ) > $limit){
$excerpt_content = mb_substr($post_content, 0, $limit);
echo $excerpt_content . '…';
} else {
echo $post_content;
}
?>
上記例の詳しい内容は以下となります。
strip_tags関数
strip_tags関数はHTMLやPHPタグを取り除く事ができる関数です。
$post_content = strip_tags(get_the_content());
今回は、Wordpressで本文を取得(get_the_content)しHTMLやPHPタグを取り除いています。
特定のタグを取り除きたくない場合は以下のように引数に指定します。
※取り除かなかったタグは文字数にカウントされますのでご注意ください。
// brタグを残す場合
$post_content = strip_tags(get_the_content(),'<br>');
str_replace関数
str_replace関数は文字列を置換する関数です。
$excerpt_content = str_replace(array("\n", "\r\n"), '', $post_content);
今回は、取得した文字列から改行を表示させないように空にしています。
strip_tags関数でpタグを取り除いた場合、pタグ同士の間にスペースが入ってしまいますので、それを取り除くにも有効となります。
変数$limit
変数$limitには、表示する文字数を格納し使用します。
今回は50文字としています。
$limit = '50';
mb_strlen関数
mb_strlen関数で文字列の長さを取得し、if文で変数$limitで定義した文字数を超えた場合、超えていない場合の処理を定義しています。
if(mb_strlen($post_content ) > $limit){}
変数$limitの文字数を超えた場合は、次項で解説する指定の文字数だけ取得し末尾に記号を追加する処理をし、超えていない場合はそのまま出力をしています。
mb_substr関数
mb_substr関数は指定した文字数までを取得する関数です。
第1引数に元となる文字列、第2引数に何文字目から取得するかを指定、第3引数に何文字取得するかを指定しています。
$excerpt_content = mb_substr($post_content, 0, $limit);
上記例では、$post_contentの0文字目から変数$limitで指定した50文字を取り出しています。
さいごに
いかがでしたでしょうか。
今回は、PHPの関数を使って表示文字数を制限する方法を解説しました。
PHPでの方法を覚えておくとWordpressの関連もあり、PHPを使用する機会も多くなっていますので覚えておけば応用が利くかと思います。