Hay muchos modos para substituir el texto del botón de un cuadro de búsqueda, la mayoría involucran cambios en la maquetación que en ocasiones pueden complicarse, Drupal permite substituir este texto por un icono utilizando el hook form_alter del API de forms.

Este es el código que he utilizado en el pequeño módulo que tengo creado para modificaciones generales que substituye la palabra "Buscar" por un icono de una lupa en el bloque de búsqueda de este blog.

<?php
function mimodulo_form_alter(&$form, $form_state, $form_id){
  if (
$form_id == 'search_block_form'){
   
// Se invoca la variable global $theme para obtener el tema activado en ese momento
   
global $theme;
   
// Se elimina el título del bloque de búsqueda
   
unset($form['search_block_form']['#title']);
   
// Se substituye el texto del bloque por un image_button
    // y se le da la ruta donde está la imágen a mostrar
   
$form['submit'] = array('#type' => 'image_button', '#value' => t('Search'),
                  
'#src'  => drupal_get_path('theme', $theme).'/images/search.png');
  }
}
?>

Hoy me he peleado con un formulario que tenía que generar "al vuelo" y me he encontrado con dos variantes de este error:

"warning: implode() [function.implode]: Bad arguments. in /includes/form.inc on line 622."
"warning: implode() [function.implode]: Invalid arguments. in /includes/form.inc on line 622."

El problema parece residir en que, cuando generas el formulario que tiene campos de tipo select o checkbox con drupal_render , no inserta todas las propiedades que requiere el modulo form y produce uno de los errores que podéis ver más arriba.

Buscando en drupal.org, he visto una solución a este problema, insertandole estas propiedades, en este caso al select, con la función _element_info .

$form['select']+= _element_info('select');

Donde $form['select'] es el elemento select del formulario que queremos completar.
Es importante que se le añada esta sentencia antes de establecer las propiedades específicas de nuestro form, ya que sino, sobreescribirá varias de ellas y perderemos información.

De todas formas, la forma recomendable de generar un formulario en drupal, que nos evita este tipo de problemas es usar drupal_get_form() en la llamada a la función que genera el formulario, en lugar de drupal_render en la propia función.