指定文字数を抜粋して表示するTEXTヘルパー
開発環境:CakePHP2.5.1
ヘッドラインや検索結果など、ある程度長い文章の一部だけを表示させたいケースがあります。
そんな時に便利なヘルパーがCakePHPには3つ用意されています。
それでは一つずつ見ていきましょう。
先頭から一定文字数を抜粋するtruncate
ヘッドラインなどでよく見る、先頭から10文字くらいタイトルが見えていて、残りは…のようになっているアレです。
次のような文章があったとします。
<?php $text = 'CakePHPはPHP用の高速開発フレームワークです。アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。 MVC や ORM といった、よく知られているデザインパターンを、「設定より規約優先」の考え方で利用して、CakePHPは開発コストや開発者が書く必要のあるコードを減らします。'; ?>
50文字を抜粋したい場合は次のように記述します。
<?php echo $this->Text->truncate($text, 50, array( 'ellipsis' => '...', 'exact' => true, 'html' => true )); ?>
結果
CakePHPはPHP用の高速開発フレームワークです。アプリケーションの開発、メンテナンス、イ...
ellipsisは省略後の文字の指定で、ここで指定した文字も抜粋する文字数にカウントされるので注意しましょう。
exactは日本語の文字だけだと思った通りの動きをしてくれないのでtrueにしておきましょう。英語などの場合に、falseにすると次の単語の最後まで含めて切り取ってくれます。
htmlはtrueにするとHTMLタグを抜粋の対象にしないのに対し、falseにするとHTMLタグを対象に含めてくれます。
後方から一定文字数を抜粋するtail
tailの使い方はtruncateと同じですが、truncateが先頭からの一定文字数を抜粋してくれるのに対し、tailは一番最後から一定文字数を抜粋してくれます。
echo $this->Text->tail($text, 50, array( 'ellipsis' => '...', 'exact' => true, 'html' => true ));
結果
...」の考え方で利用して、CakePHPは開発コストや開発者が書く必要のあるコードを減らします。
特定の文字の前後一定文字数を抜粋するexcerpt
excerptはGoogleなどの検索結果にあるような特定のキーワードの前後一定文字数を抜粋してくれます。
<?php echo $this->Text->excerpt($text, 'MVC', 25, '...'); ?>
結果
...ストールのための拡張性の高い仕組みを提供します。 MVC や ORM といった、よく知られているデザインパ...
こちらは特定のキーワードを基準に前後25文字ずつを抜粋する方法になります。
ただし、truncateやtailと違うのは省略後の文字については抜粋文字数にはカウントされません。