unas funcionsitas que hize, espero te sirvan.
   Código PHP:
    /* Quest - Chile 2k5 */
/* Funcion Para Mostrar Smillies de un directorio especifico    */
/* echo view_smillies("./imagenes/smill/");                        */
function view_smillies ($dire,$salto='0',$limite=all,$form='post',$textarea='txtMensaje') {
    $i = 1; $l = 1; $s = '';
    foreach (glob("$dire/{*.gif,*.GIF}", GLOB_BRACE) as $filename) {
        
        $s_code = basename($filename);
        $s_len = strlen($s_code) - 4;
        $s_code = ":".substr($s_code, 0, $s_len).":";
 
        $s.="<a onmousedown=\"document.$form.$textarea.value+='$s_code '\" title=\"".$s_code."\"><img src=\"".$filename."\" border=0 alt=\"".$s_code."\" style='cursor:hand'></img></a>"; 
 
        if ($l == $limite) {
            return $s;
            exit;
        }
 
        if ($i == $salto) { 
            $s.="<br>"; $i=1;
        } else {
            $i++;
        }
        $l++;
    }
 
    return $s;
 
}
/* Funcion Para Mostrar Smillies de un directorio especifico    */
/* Dependiendo del codigo que traiga el mensaje                    */
/* echo change_smillies("./imagenes/smill/", $string);            */
function change_smillies ($dire,$s) {
    foreach (glob("$dire/{*.gif,*.GIF}", GLOB_BRACE) as $filename) {
        $s_code = basename($filename);
        $s_len = strlen($s_code) - 4;
        $s_code = ":".substr($s_code, 0, $s_len).":";
 
        $s = str_replace("$s_code","<img border=0 src=\"$filename\"></img>", $s);
    }
    return $s;
}
 
/* Funcion Para No Mostrar los Smillies                        */
/* Dependiendo del codigo que traiga el mensaje                */
/* echo borra_smillies("./imagenes/smill/", $string);        */
function borra_smillies ($dire,$s) {
    foreach (glob("$dire/{*.gif,*.GIF}", GLOB_BRACE) as $filename) {
        $s_code = basename($filename);
        $s_len = strlen($s_code) - 4;
        $s_code = ":".substr($s_code, 0, $s_len).":";
 
        $s = str_replace("$s_code","", $s);
    }
    return $s;
}