検索時のキーワードの制限

入力された文字に含まれる記号削除、マージ、除外、単語数上限設定方法について

PHP

// 小文字化 $keywords = mb_strtolower($keywords, 'UTF-8'); // 半角英数字全角カタカナへ置換 $keywords = mb_convert_kana($keywords, 'KVas', 'UTF-8'); // 半角記号とe28780~e29cbf(★や♥を含む記号)を半角スペースに置換 $keywords = preg_replace('/([\x21-\x2f|\x3a-\x40|\x5b-\x60|\x7b-\x7e]|\xe2[\x87-\x9c][\x80-\xbf])+/', ' ', $keywords); // カンマまたは " "、 \r、 \t、 \n、 \f などの空白文字でキーワードを分割 // 重複しているキーワードをマージ $arr = array_unique(preg_split('/[\s,]+/', $keywords)); // 特定のキーワードを除外 $exclusion_words = array('○○○', '△△△', '×××'); $arr = array_diff($arr, $exclusion_words); // 30文字以上のキーワードを除外 if (! empty($arr)) { foreach($arr as $arrKey => $arrVal) { if (mb_strlen($arrVal, 'UTF-8') > 30) { unset($arr[$arrKey]); } } } // キーワードは5つまで array_splice($arr, 5); // スペースで再結合 if (! empty($arr)) { $keywords = implode(' ', $arr); } else { $keywords = ''; }

文字コード表 UTF8 e280-e2bfを参照。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。
主にLAPP環境でPHPを書いています。
最近はjQueryをよく書いています。