Есть 2 условия preg_replace_callback:
if (strpos (self::$template, "[authis]") !== false) {
self::$template = preg_replace_callback("#\\[authis\\](.*?)\\[else\\](.*?)\\[/authis\\]#is", function($matches){
return $matches[1];
}, self::$template);
}
if (strpos (self::$template, "[authis]") !== false) {
self::$template = preg_replace_callback("#\\[authis\\](.*?)\\[/authis\\]#is", function($matches){
return $matches[1];
}, self::$template);
}
Эти 2 условия хорошо работают, но хотелось бы как это их объединить, если это возможно. Первая регулярка ищет конструкцию вида "[authis]Текст[else]Текст[/authis]", а вторая ищет [authis]Текст[/authis].
Вопрос следующий. Как заставить искать обе конструкции за раз. То есть в первой конструкции должен игнорироваться участок "\\[else\\](.*?)", если его нет в самой конструкции.
Если нет "[else]Текст", то игнорируется "\\[else\\](.*?)".