Change button markup of searching form
* Updated *

You can do this by overriding theme_button() in your theme. Note that the code here is copied from theme_button(), with the return value adjusted accordingly:

function THEMENAME_button($variables)
{
  $element = $variables['element'];
  $element['#attributes']['type'] = 'submit';
  element_set_attributes($element, array('id', 'name', 'value'));

  $element['#attributes']['class'][] = 'form-' . $element['#button_type'];
  if (!empty($element['#attributes']['disabled']))
  {
    $element['#attributes']['class'][] = 'form-button-disabled';
  }

  if(isset($element['#search_button']) &amp;&amp; $element['#search_button'])
  {
    return '&lt;button' . drupal_attributes($element['#attributes']) . '&gt;&lt;i class="fi-magnifying-glass"&gt;&lt;/i&gt;&lt;/button&gt;';
  }
  else
  {
    return '&lt;input' . drupal_attributes($element['#attributes']) . ' /&gt;';
  }
}


Then you need to add #search_button = TRUE to the button in hook_form_alter()

function hook_form_alter(&amp;$form, &amp;$form_state, $form_id)
{
  if($form_id == 'MYFORMID')
  {
    $form['actions']['submit']['#search_button'] = TRUE;
  }
}


Note: This will render the button as requested. No guarantees that it will actually work with the Form API. That needs separate testing.