Ah, ho capito... beh... la ricerca puoi farla con le funzioni di stringa o le espressioni regolari... per non usare le regexp e semplificare tutto potresti semplicemente usare dei segnaposto tipo:

{IMG::25::right}

A questo punto cerchi "{IMG" e poi esplodi il resto della stringa, ad es.:

Codice PHP:
// $tpl // (contiene il template) per esempio con {IMG::25::right}
// ...
$phb '{IMG'$phe "}"// marcatori di inizio e fine
$pb strpos($ph$tpl); // posizione del placeholder
if ($p !== false) {
  
$pe strpos($pb$tpl$pb); // fine placeholder
  
$pl $pe-$pb// lunghezza placeholder
  
$cd substr($tpl$p+6$pl-2); // ...controllare! Insomma: tutto meno inizio e fine
  // $cd dovrebbe contenere 25::right
  
list($id$pos) = explode('::'$cd);
  
$tag '[img].../?id='.$id.' align=[/img]';
};
// ... 

solo che devi mettere tutto in un ciclo per esaminare vari placeholders e poi usare str_replace per la sostituzione... non è "pulitissimo" come processo, ma è un modo semplice di procedere e forse per iniziare più facile che ragionare con regexp se poi avessi bisogno di modificarle.

Consiglio cmq di usare un motore già pronto!
...da controllare soprattutto le posizioni (+1 / -1 da verificare...)!!!!