【CakePHP2.3】文字列中の特定のテキストにハイライトをかける。

「TextHelper::highlight()」メソッドを使う。

■関数定義

$this->Text->highlight($text, $phrase, $options);

■引数詳細

プロパティ 初期値 詳細
$text 省略不可 対象のテキスト
$phrase 省略不可 ハイライトしたいフレーズ
$options array() オプション(下記参照)

■$optionsに設定可能なパラメーター

キー 初期値 詳細
format ‘<span class=”highlight”>\1</span>’ ハイライト時のフォーマット
html false HTMLの混在したテキストを渡す場合はtrue、混在しない場合はfalse
regex “|%s|iu” 置換時に用いられる正規表現。%sは$phraseに置き換えられる

以下例。

コントローラー側で以下のような文字列をビューにセットしたとする。

$str = 'あいうえおかきくけこさしすせそたちつてとなにぬねの';
$this->set('str', $str);

次にビュー側で以下のように記述。

<?php echo $this->Text->highlight($str, 'くけこ'); ?>

すると以下のようなHTMLが出力される。

あいうえおかき<span class="highlight">くけこ</span>さしすせそたちつてとなにぬねの

特定のテキストの見せ方が自由自在になるので検索機能周りと連携させるとめちゃくちゃ便利。