В шаблоне любой повторяющейся границы парсинга можно использовать макрос фильтрации циклов повторяющихся границ
С помощью фильтров можно отсеивать лишние циклы на уровне их создания. Для этого достаточно вставить в шаблон нужной повторяющейся границы макрос {CFILTER} и указать нужные параметры фильтрации.
В макросе {CFILTER} можно использовать:
– Оператор [VALUE]
– Операторы [PARAM]
– Макросы обычных границ парсинга, например, <CD_GRAN_1!>
– Макросы обычных границ парсинга, заданных внутри повторяющейся, например, [GRAN1]
– Макрос шаблона вывода [REPLACE]
Содержимое макроса {CFILTER} будет удаляться. Если вам нужно использовать, например, оператор [VALUE] в макросе {CFILTER} и одновременно его выводить в результат, то просто продублируйте его в нужные места
1 | {CFILTER}...[VALUE]...{/CFILTER}[VALUE] |
Функции фильтрации не чувствительны к регистру.
Если фильтров недостаточно, создайте запрос на добавление фильтров в этой теме на форуме.
Фильтрация циклов по наличию вхождения
1 2 3 4 5 6 7 | {CFILTER}текст{ENTRY}вхождение{/CFILTER} (проверяется, содержит ли текст вхождение) {CFILTER}[VALUE]{ENTRY}Millenium Falcon{/CFILTER} - отфильтрует циклы, контент которых НЕ СОДЕРЖИТ в себе вхождения "Millenium Falcon" {CFILTER}[GRAN3]{ENTRY}Millenium Falcon{/CFILTER} - отфильтрует циклы, в которых заданная внутри граница парсинга 3 НЕ СОДЕРЖИТ в себе вхождения "Millenium Falcon" {CFILTER}{NOT}[VALUE]{ENTRY}Millenium Falcon{/CFILTER} - отфильтрует циклы, контент которых СОДЕРЖИТ в себе вхождения "Millenium Falcon" (так как установлен параметр {NOT}) |
Фильтрация циклов по списку вхождений
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | {CFILTER}текст{ENTRYLIST}список вхождений (построчно){/CFILTER} (проверяется, содержится ли в тексте хотя бы одно вхождение из списка) {CFILTER}[VALUE]{ENTRYLIST} Millenium Falcon R2D2 {/CFILTER} - отфильтрует циклы, контент которых НЕ СОДЕРЖИТ в себе ни одного вхождения из списка {CFILTER}[GRAN3]{ENTRYLIST} Millenium Falcon R2D2 {/CFILTER} - отфильтрует циклы, в которых заданная внутри граница парсинга 3 НЕ СОДЕРЖИТ в себе ни одного вхождения из списка {CFILTER}{NOT}[VALUE]{ENTRYLIST} Millenium Falcon R2D2 {/CFILTER} - отфильтрует циклы, контент которых СОДЕРЖИТ в себе хотя бы одно вхождение из списка (так как установлен параметр {NOT}) |
Фильтрация циклов по точному соответствию
1 2 3 4 5 6 7 | {CFILTER}текст 1{MATCH}текст 2{/CFILTER} (проверяется, равны ли "текст 1" и "текст 2") {CFILTER}[VALUE]{MATCH}Millenium Falcon{/CFILTER} - отфильтрует циклы, контент которых НЕ РАВЕН "Millenium Falcon" {CFILTER}[GRAN3]{MATCH}Millenium Falcon{/CFILTER} - отфильтрует циклы, в которых контент заданной внутри границы парсинга 3 НЕ РАВЕН "Millenium Falcon" {CFILTER}{NOT}[VALUE]{MATCH}Millenium Falcon{/CFILTER} - отфильтрует циклы, контент которых РАВЕН "Millenium Falcon" (так как установлен параметр {NOT}) |
Фильтрация циклов по списку точных соответствий
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | {CFILTER}строка{MATCHLIST}список строк{/CFILTER} (проверяется, равна ли строка хотя бы одной из списка строк) {CFILTER}[VALUE]{MATCHLIST} Millenium Falcon R2D2 {/CFILTER} - отфильтрует циклы, контент которых НЕ РАВЕН хотя бы одной из строк списка {CFILTER}[GRAN3]{MATCHLIST} Millenium Falcon R2D2 {/CFILTER} - отфильтрует циклы, в которых заданная внутри граница парсинга 3 НЕ РАВНА хотя бы одной из строк списка {CFILTER}{NOT}[VALUE]{MATCHLIST} Millenium Falcon R2D2 {/CFILTER} - отфильтрует циклы, контент которых равен хотя бы одной из строк списка (так как установлен параметр {NOT}) |
Фильтрация циклов с помощью логических выражений
1 2 3 4 5 6 7 8 9 | {CFILTER}{MATH}логическое выражение{/CFILTER} (если результат работы логического выражения = true, то цикл повторяющейся границы парсинга пройдет фильтр) {CFILTER}{MATH}3>=1{/CFILTER} - true, так как 3 больше либо равно 1 {CFILTER}{NOT}{MATH}3>=1{/CFILTER} - false, так как 3 больше либо равно 1 и добавлен параметр {NOT} {CFILTER}{MATH}3<1{/CFILTER} - false, так как 3 НЕ меньше 1 {CFILTER}{MATH}(3+5)>=1{/CFILTER} - true, так как 8 больше либо равно 1 {CFILTER}{MATH}[VALUE]>=1{/CFILTER} - тут проверяется число выводимое [VALUE] (больше либо равно 1) {CFILTER}{MATH}[GRAN1]>=1{/CFILTER} - тут проверяется число выводимое [GRAN1] (больше либо равно 1) |