Hace poco, necesitaba una función que no haga uso de «filter_validate_email» ya que, esto lo que hacía era eliminarme las tildes, caractéres especiales y eso era lo que no necesitaba. Buscando, encontré esta función (pido perdón si no cito al autor, ya que no recuerdo exactamente de dónde es que lo obtuve) y la modifiqué a tal manera que me hiciera lo que necesitaba: No eliminar caractéres con tildes, pero si quitarles estas.

Sin mas que hablar, les dejo esta función para limpiar string de correo, que les puede resultar muy útil a la hora de programar.

function limpiar_correo($string) //función para limpiar strings
{
  $string = trim($string);

  $string = str_replace(
      array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
      array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
      $string
  );

  $string = str_replace(
      array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
      array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
      $string
  );

  $string = str_replace(
      array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
      array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
      $string
  );

  $string = str_replace(
      array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
      array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
      $string
  );

  $string = str_replace(
      array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
      array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
      $string
  );

  $string = str_replace(
      array('ñ', 'Ñ', 'ç', 'Ç'),
      array('n', 'N', 'c', 'C',),
      $string
  );

  //Esta parte se encarga de eliminar cualquier caracter extraño
  $string = str_replace(
      array("|", "!", "",
           "·", "$", "%", "&", "/",
           "(", ")", "?", "'", "¡",
           "¿", "[", "^", "<code>", "]",
           "+", "}", "{", "¨", "´",
           ">", "< ", ";", ",", ":", " "),
      '',
      $string
  );

  return $string;
}

 

Williams Azabache Sarmiento

Que puedo decir...