getAdapter()->quote($word); foreach ($filterFields as $table => $fields) { if (!is_string($table)) { $table = ''; } if($fields instanceof Zend_Db_Expr) { $whereFields[] = $fields->__toString() . " {$equation} {$word}"; } else if (is_string($fields) && strpos($fields, '(') !== false && strpos($fields, ')') !== false) { $whereFields[] = "{$fields} {$equation} {$word}"; } else { $fields = (array) $fields; foreach ($fields as $field) { if($field instanceof Zend_Db_Expr) { $whereFields[] = $field->__toString() . " {$equation} {$word}"; } else if (is_string($field) && strpos($field, '(') !== false && strpos($field, ')') !== false) { $whereFields[] = "{$field} {$equation} {$word}"; } else { $whereFields[] = (($table) ? "`{$table}`." : '') . "`{$field}` {$equation} {$word}"; } } } } $where[] = '(' . implode((($fieldRule == 'and') ? ' AND ' : ' OR '), $whereFields) . ')'; } if (empty($where)) { return false; } $sql = implode((($wordRule == 'and') ? ' AND ' : ' OR '), $where); $select->where($sql); return true; } /** * Метод розбиває строку на слова. Для групування слів можна використовати символ " (подвійна лапка) * * @param string $string * Вхідна строка. * * @return array * Повертає масив слів. Якщо передана порожня строка - то повертається порожній масив. */ public static function getWords($string) { $string = ' ' . $string . ' '; preg_match_all('/(?<= )"([^"]*)"(?= )/', $string, $result); if ($result) { $string = str_replace($result[0], '', $string); } $words = explode(' ', $string); if ($result) { $words = array_merge($words, $result[1]); } $words = array_unique($words); $words = array_filter($words, function ($var) { return ('' != $var); }); return $words; } }