Preg_match_all e, em seguida, substitua por uma string de input

Basicamente, eu quero analisar alguns conteúdos de input que têm alguma syntax, em seguida, converter em códigos html.

por exemplo

$input="Please watch video 1 [{video('https://stackoverflow.com/questions/26112544/preg-match-all-and-then-replace-for-an-input-string/whats-new/chain_reaction-vid1.jpg')} width="580" height="326" alt="" video="Zb36h4K2IKQ"] and video 2 [{video('whats-new/chain_reaction- vid2.jpg')} width="580" height="326" alt="" video="Zb36h4K2IDY"] . Enjoy."; 

Atualmente, existe uma maneira de extraar todos os atributos para o uso de vídeo,

 $pattern="/video\('\K[^']*|(?:width|height|alt|video)=\"\K[^\"]*/"; preg_match_all($pattern, $input, $matches); print_r($matches); 

Embora eu consiga obter os $matches , parece difícil de replace.

[{video('https://stackoverflow.com/questions/26112544/preg-match-all-and-then-replace-for-an-input-string/whats-new/chain_reaction-vid1.jpg')} width="580" height="326" alt="" video="Zb36h4K2IKQ"]

com algumas funções de retorno de chamada para converter esta parte em html apropriado, como

Alguma sugestão.

Regex:

 \[{video\('([^']*)'\)}([^\]]*)\s+video="([^"]*)"] 

Cadeia de substituição:

  

DEMO

 < ?php $input='Please watch video 1 [{video(\'https://stackoverflow.com/questions/26112544/preg-match-all-and-then-replace-for-an-input-string/whats-new/chain_reaction-vid1.jpg\')} width="580" height="326" alt="" video="Zb36h4K2IKQ"] and video 2 [{video(\'https://stackoverflow.com/questions/26112544/preg-match-all-and-then-replace-for-an-input-string/whats-new/chain_reaction- vid2.jpg\')} width="580" height="326" alt="" video="Zb36h4K2IDY"] . Enjoy.'; echo preg_replace("~\[{video\('([^']*)'\)}([^\]]*)\s+video=\"([^\"]*)\"]~", '', $input) ?> 

Saída:

 Please watch video 1  and video 2  . Enjoy.