DUDA: Como eliminar todos los caracteres raros y emojis y dejar solo los caracteres de nombres y apellidos

  • Autor Autor John Roronoa
  • Fecha de inicio Fecha de inicio
John Roronoa

John Roronoa

Iota
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Por ejemplo
Eniçma
Si deseo eliminar la "ç"

Pero en
Mañaneros, aqui no deseo eliminar la "ñ"

Literalmente lo que quiero es sanear los nombres y que sean solo permitidos nombres normales

al igual que acentos

Hernández , no deseo eliminar la "á"

Actualmente tengo una funcion pero si me elimina las ñ y los acentos

PD: Tambien deseo permitir numeros, ejemplo

Juan Hernández Mañaneros 89

alguien me echa una mano
 
Haces una white list, y todo lo que no esté lo remplazas por nada "".
 
Haces una white list, y todo lo que no esté lo remplazas por nada "".
Tendrás un ejemplo

Actualmente con regex elimino todo eso, pero como mencioné, me elimina caracteres como la á é í ó ú ñ
 
Espero te pueda servir esta función..

[-Coloca los caracteres que deseas eliminar-]


PHP:
function cholemon($cadena){

        $cadena = str_replace(
            array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
            array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
            $cadena
        );
 
        $cadena = str_replace(
            array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
            array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
            $cadena );
    
        $cadena = str_replace(
            array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
            array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
            $cadena );
    
        $cadena = str_replace(
            array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
            array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
            $cadena );
    
        $cadena = str_replace(
            array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
            array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
            $cadena );
    
        $cadena = str_replace(
            array('ñ', 'Ñ', 'ç', 'Ç'),
            array('n', 'N', 'c', 'C'),
            $cadena
        );
        return $cadena;
    }
 
EDIT:
Esa pagina me sirvio demasiado, Jamas imagine que con solo añadir los caracteres dentro, funcionaría

Usaba este
/[^\w\-_\. ]+/g

Y haciendo el ejemplo en la pagina
[^\w\-_\. áéíóúñ]+

Este seria la regex que busco. Gracias colega
Haces una white list, y todo lo que no esté lo remplazas por nada "".
 
Tendrás un ejemplo

Actualmente con regex elimino todo eso, pero como mencioné, me elimina caracteres como la á é í ó ú ñ
Son medio especiales, creo que los acentos son \u00E0-\u00FC
 
Gracias, creo que eso es su codificacion ascii o algo asi verdad?
Si algo asi, es unicode y se utiliza para no tener problemas con la codificacion, ya que al guardarlo, puede cambiar y producir errores.
 
Quizá una alternativa mas sencilla podría ser:


PHP:
string = 'AŠAáéíóú';   
transliterator_transliterate('Any-Latin; Latin-ASCII;', string); //retorna: ASAaeiou

otro ejemplo:

PHP:
transliterator_transliterate('Any-Latin; Latin-ASCII; Lower()', "A æ Übérmensch på høyeste nivå! И я люблю PHP! fi");
// retorna: a ae ubermensch pa hoyeste niva! i a lublu php! fi

Puedes ver la opciones completas de la función en: https://www.php.net/manual/es/transliterator.transliterate.php
 
Atrás
Arriba