検索時のキーワードの制限
入力された文字に含まれる記号削除、マージ、除外、単語数上限設定方法について
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 = '';
}
文字コード表 2400-27ffを参照。