/** * Parses search keywords. * * @param string $keywordString */ protected static function parseKeywords($keywordString) { // convert encoding if necessary if (CHARSET == 'UTF-8' && !StringUtil::isASCII($keywordString) && !StringUtil::isUTF8($keywordString)) { $keywordString = StringUtil::convertEncoding('ISO-8859-1', 'UTF-8', $keywordString); } // remove bad wildcards $keywordString = preg_replace('/(?<!\\w)\\*/', '', $keywordString); // remove search operators $keywordString = preg_replace('/[\\+\\-><()~]+/', '', $keywordString); if (StringUtil::substring($keywordString, 0, 1) == '"' && StringUtil::substring($keywordString, -1) == '"') { // phrases search $keywordString = StringUtil::trim(StringUtil::substring($keywordString, 1, -1)); if (!empty($keywordString)) { self::$keywords = array_merge(self::$keywords, array(StringUtil::encodeHTML($keywordString))); } } else { // replace word delimiters by space $keywordString = preg_replace('/[.,]/', ' ', $keywordString); $keywords = ArrayUtil::encodeHTML(ArrayUtil::trim(explode(' ', $keywordString))); if (count($keywords) > 0) { self::$keywords = array_merge(self::$keywords, $keywords); } } }