Analisar através de uma string php e substituir substrings

Eu tenho uma string, em PHP e a string tem ocorrências do padrão%%abc%%(some substring)%%xyz%%

Existem várias ocorrências de tais substrings dentro da string principal. Cada uma dessas ocorrências precisa ser substituída por uma string de dentro de uma matrizarray('substring1','substring2','substring3','substring4') dependendo da resposta de umfunction() que retorna um inteiro entre 1 e 4.

Eu não sou capaz de descobrir uma maneira eficiente de fazer isso.

questionAnswers(2)

yourAnswerToTheQuestion