Debo de ser un poco corto, pero no acabo de entenderlo con esos ejemplos...
Veamos, aplicado a mi caso ¿sería así?
Código PHP:
function subcadena($matches){
$new_cadena = explode = ("/", $matches);
return '<a href="'.$new_cadena[4].'"> <img src=\"$matches\" style=\"width: 100px; height: 100px;\" /></a>';
}
$a = array(
"/\[img\](.*?)\[\/img\]/is"
)
$b = array(
"subcadena",
)
preg_replace_callback($a, $b, $todo);
Saludos.