diff --git a/README.md b/README.md
index 60c3bcd..9dec06f 100644
--- a/README.md
+++ b/README.md
@@ -78,6 +78,7 @@ tovarParams
&fp - массив для передачи данных запроса на фильтрацию (по-умолчанию используется массив $_GET)
&submitDocPage=`1` - сабмит формы будет произведен на страницу, заданную в docid
&allowZero=`1` - разрешает 0 в значениях чекбокса
+&useRegexp=`1` - только для сильных духом:)
**Eсли хотим искать только по заданным документам, то до вызова [!eFilter!] устанавливаем их спискок в плейсхолдер eFilter_search_ids**
diff --git a/assets/snippets/eFilter/README.md b/assets/snippets/eFilter/README.md
index 60c3bcd..9dec06f 100644
--- a/assets/snippets/eFilter/README.md
+++ b/assets/snippets/eFilter/README.md
@@ -78,6 +78,7 @@ tovarParams
&fp - массив для передачи данных запроса на фильтрацию (по-умолчанию используется массив $_GET)
&submitDocPage=`1` - сабмит формы будет произведен на страницу, заданную в docid
&allowZero=`1` - разрешает 0 в значениях чекбокса
+&useRegexp=`1` - только для сильных духом:)
**Eсли хотим искать только по заданным документам, то до вызова [!eFilter!] устанавливаем их спискок в плейсхолдер eFilter_search_ids**
diff --git a/assets/snippets/eFilter/eFilter.class.php b/assets/snippets/eFilter/eFilter.class.php
index 0451032..ae94d56 100644
--- a/assets/snippets/eFilter/eFilter.class.php
+++ b/assets/snippets/eFilter/eFilter.class.php
@@ -750,7 +750,12 @@ public function makeAllContentIDs ($DLparams)
}
if ($tvid != 0 && isset($this->filter_tv_names[$tvid]) && $val != '') {
if ($this->filters[$tvid]['many'] == '1') {
- $oper = 'containsOne';
+ if (isset($this->params['useRegexp'])) {
+ $oper = 'regexp';
+ $val = '[[:<:]]' . str_replace(array(',', '||'), '[[:>:]]|[[:<:]]', $val) . '[[:>:]]';
+ } else {
+ $oper = 'containsOne';
+ }
}
$val = str_replace(array('(', ')'), array('\(', '\)'), $val);
$fltr .= $this->dl_filter_type . ':' . $this->filter_tv_names[$tvid] . ':' . $oper . ':' . $val . ';';
@@ -825,7 +830,14 @@ public function makeCurrFilterValuesContentIDs ($DLparams)
$val = ($v == '0' || $v == '') ? '' : $v;
}
if ($tvid != 0 && isset($this->filter_tv_names[$tvid]) && $val != '') {
- if ($this->filters[$tvid]['many'] == '1') {$oper = 'containsOne';}
+ if ($this->filters[$tvid]['many'] == '1') {
+ if (isset($this->params['useRegexp'])) {
+ $oper = 'regexp';
+ $val = '[[:<:]]' . str_replace(array(',', '||'), '[[:>:]]|[[:<:]]', $val) . '[[:>:]]';
+ } else {
+ $oper = 'containsOne';
+ }
+ }
$val = str_replace(array('(', ')'), array('\(', '\)'), $val);
$fltr .= $this->dl_filter_type . ':' . $this->filter_tv_names[$tvid] . ':' . $oper . ':' . $val.';';
}