CakePHPで指定文字数を抜粋して表示する方法

こんにちは!ぐちです。

テキストの一部を表示する

検索結果やサマリー表示など文字列の一部を省略して表示したいケースって結構あると思うのですがCakePHPには便利なヘルパーが用意されています。今回はそれをご紹介したいと思います。

truncate

例えば下記のような文章があったとします。

<?php
$text = 'CakePHPには便利な機能が盛りだくさんです。';
?>

この文章の先頭から10文字を表示して残りは省略したい場合にはCakePHPのヘルパーを使って下記のように表示します。

echo $this->Text->truncate($text, 10, array(
    'ellipsis' => '...',
    'exact' => true,
    'html' => true
));

ellipsisで指定した省略文字は「…」となります。ここで注意が必要なのは省略文字に指定した文字数も表示する文字数にカウントされるということです。

exactはfalseにしておくと英語の場合には単語単位で省略してくれます。ただ日本語の場合はうまく動かないのでtrueを指定しておくといいですね。

htmlはtrueを指定するとHTMLタグを抜粋の対象にしないようにカウントしてくれます。falseであればHTMLタグも文字数としてカウントされてしまいます。

tail

先ほどのtruncateは先頭から省略する関数でしたがtailは文字列の末尾から省略する関数です。使い方は先ほどのものと同様ですが詳しくはネットで調べてみてください。笑

excerpt

特定の文字の前後一定文字数を抜粋するexcerptなどもあります。例のごとく詳細はネットで調べてください。笑

こうしたちょっとしたことでも用意されている仕組みを使うことでスマートにコーディングできますよね。

では今回はこの辺で。