se vuoi inserire le immagini nel db devi usare un campo blob ma io non l'ho mai fatto, preferisco inserire nel database il link all'immagine

poi str_replace accetta gli array come imput quindi fai 2 array

$smiles = array('','',':?');
ed uno con il nome dei file con le faccine
$file = array('[img]smile.gif[/img]','[img]smile1.gif[/img]','[img]smile1.gif[/img]');

in questo modo

$testo = str_replace($smile, $file, $testo);

e sei a cavallo
ciao