Ваша проблема с тем, что отображается только одна из двух форм, может быть связана с ошибкой в регулярных выражениях или с тем, как вы используете `$matches` в своих функциях. Обратите внимание на корректность индексов в массиве `$matches` в обработчиках `preg_replace_callback`. Также стоит убедиться, что вы используете разные маркеры для замены каждой из форм.
Вот пример того, как можно исправить вашу проблему:
1. Убедитесь, что используются различные маркеры для каждой формы. Например, если вы используете `#FORMA_([\d]+)#` для первой формы, вы можете использовать `#FORM_([\d]+)#` для второй.
2. Обратите внимание на специфические индексы для `$matches`. Вам необходимо убедиться, что индексы у них правильные.
Попробуйте изменить свой код следующим образом:
```php
// Для первой формы
echo preg_replace_callback(
"/#FORMA_([\d]+)#/is".BX_UTF_PCRE_MODIFIER,
function ($matches) {
ob_start();
$GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:form.result.new",
"article_booking",
Array(
"IGNORE_CUSTOM_TEMPLATE" => "Y",
"WEB_FORM_ID" => "8",
"FORMA" => $matches[1] // Исправлено на правильный индекс
)
);
$returnStr = @ob_get_contents();
ob_end_clean(); // Исправлено на правильное завершение
return $returnStr;
},
$arResult["CACHED_TPL"]
);
// Для второй формы
echo preg_replace_callback(
"/#FORM_([\d]+)#/is".BX_UTF_PCRE_MODIFIER,
function ($matches) {
ob_start();
$GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:form.result.new",
"webinar_article",
Array(
"IGNORE_CUSTOM_TEMPLATE" => "Y",
"WEB_FORM_ID" => "7",
"FORM" => $matches[1] // Исправлено на правильный индекс
)
);
$returnStr = @ob_get_contents();
ob_end_clean(); // Исправлено на правильное завершение
return $returnStr;
},
$arResult["CACHED_TPL"]
);
```
В данном примере я исправил индексы в массиве `$matches` и корректно вызываю `ob_end_clean()` вместо `ob_get_clean()`. Также убедитесь, что ваша шаблонная часть (`$arResult["CACHED_TPL"]`) действительно содержит оба маркера (например `#FORMA_1#` и `#FORM_1#`), чтобы их можно было корректно обработать.
Попробуйте этот подход и посмотрите, решает ли это вашу проблему.