PHPでキーワードを強調表示

複数の特定のキーワードを強調表示、それを含む指定の単語を除外設定

・特定のキーワードを強調(□□コーヒーとコーヒー)
・そのキーワードが含まれる単語を強調しない(○○コーヒー、○○□□コーヒー)

PHP

// キーワードが含まれる文字列 $str = 'コーヒー、ミルク、○○コーヒー、○○ミルク、□□コーヒー、○○□□コーヒー、コーヒー××'; // 除外したいキーワードが含まれる単語 $exclude_words = array('○○コーヒー', '○○□□コーヒー'); $exclude_pattern = implode('|', $exclude_words); // ○○コーヒー|○○□□コーヒー // 強調したいキーワード $target_words = array('コーヒー', '□□コーヒー'); $target_pattern = implode('|', $target_words); // コーヒー|□□コーヒー // 除外キーワードで改行 if (empty($exclude_pattern)) { $str_exclude = $str; } else { $str_exclude = preg_replace('/(' . $exclude_pattern . ')/i', "\n$1\n", $str); $lines = explode("\n", $str_exclude); } $str_replace = ''; foreach($lines as $linesKey => $linesVal) { $flg = false; foreach ($exclude_words as $excludeWordsVal) { // 行が除外キーワードにマッチするか if ($linesVal == $excludeWordsVal) { $flg = true; break; } } if ($flg) { // 除外キーワードであれば処理しない $str_replace = $str_replace . $linesVal; } else { // 除外キーワードが含まれない行であれば、キーワードとマッチしたら強調 $str_replace = $str_replace . preg_replace('/(' . $target_pattern . ')/i', '<em>${1}</em>', $linesVal); } }
コーヒー、ミルク、○○コーヒー、○○ミルク、□□コーヒー、○○□□コーヒー、コーヒー××

除外キーワードが空の場合

$exclude_words = array(); $target_words = array('コーヒー', '□□コーヒー');
コーヒー、ミルク、○○コーヒー、○○ミルク、□□コーヒー、○○□□コーヒーコーヒー××

某先輩が数年前に作成した同じようなプログラムが除外処理が全くできていなかったので試しに組んでみました。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について