echo_foreach_split

Директива `echo_foreach_split` последовательно выполняет ряд команд для каждого элемента, полученного при разбиении входной строки.

Синтаксисecho_foreach_split string delimiter;
По умолчаниюnone
Контекстlocation, if in location
Аргументы2+

Описание

Директива echo_foreach_split является частью NGINX Echo module, которая позволяет выполнять команды на основе разбиения входной строки с повторением по элементам. Когда эта директива вызывается, входная строка разделяется на отдельные элементы по заданному разделителю, и для каждого элемента последующие команды, определённые после echo_foreach_split, выполняются последовательно. Это особенно полезно для выполнения повторяющихся задач, когда детали задачи могут меняться в зависимости от содержимого разделённой строки.

Директива принимает как минимум два аргумента: первый аргумент — это входная строка для разбиения, а второй аргумент — разделитель, который разделяет элементы внутри этой строки. После разбиения строки команды, следующие за этой директивой, могут динамически использовать текущий элемент, что позволяет автоматизировать рабочие процессы и упорядоченно обрабатывать несколько объектов.

Один из распространённых случаев использования echo_foreach_split — чтение списка значений, разделённых запятыми, с последующей итерацией по этому списку и выполнением заданных команд для каждого значения. Такой подход полезен для ведения логов, генерации ответов или обработки входных данных, более сложных, чем позволяют стандартные директивы с одним значением.

Пример конфига

location /process_items {
    echo_foreach_split "item1,item2,item3" ",";
    echo "Current item: $echo_it";
}

Убедитесь, что входная строка не пуста; в противном случае итерации не будут выполняться.

Будьте осторожны при выборе разделителя, чтобы избежать нежелательных разбиений. Для специальных символов может потребоваться экранирование.

Команды, определённые после echo_foreach_split, должны быть корректными и надлежащим образом обрабатывать текущий элемент.

← Ко всем директивам