Skip to content

Instantly share code, notes, and snippets.

@thiagolcks
Last active July 5, 2016 12:55
Show Gist options
  • Save thiagolcks/c25a4196063fb7aefc71 to your computer and use it in GitHub Desktop.
Save thiagolcks/c25a4196063fb7aefc71 to your computer and use it in GitHub Desktop.
Class to sanitize user names
Afonso Ariel
Afonso Emanuel
Afonso Frederico
Afonso Gabriel
Afonso Manuel
Alana Aline
Alana Andressa
Alana Eduarda
Alana Gabriela
Alana Iara
Alana Inacia
Alana Inara
Alana Lara
Alana Larissa
Alana Laura
Alana Lorena
Alana Margarida
Alana Maria
Alana Mayara
Alana Nayara
Alana Patricia
Alana Paula
Alana Pietra
Alana Regina
Alana Riana
Alana Sabrina
Alana Shirley
Alana Silmara
Alana Silvana
Alana Suelen
Alana Taísa
Alana Thamires
Alana Yara
Alex Arthur
Alex Inacio
Alex Itacir
Alex Ivan
Alex João
Alex Luis
Alex Manuel
Alex Marcelo
Alex Olavo
Alex Oliver
Alex Otavio
Alex Sander
Alex Sandro
Alex Victor
Alex Vilmar
Alex Wilson
Alice Mariana
Alice Aline
Alice Andressa
Alice Angêla
Alice Beatriz
Alice Bianca
Alice Camila
Alice Carla
Alice Carolina
Alice Cristina
Alice Daniela
Alice Diane
Alice Eduarda
Alice Elisa
Alice Evilyn
Alice Fernanda
Alice Helena
Alice Heloisa
Alice Inara
Alice Isabela
Alice Joana
Alice Letícia
Alice Louise
Alice Luiza
Alice Maria
Alice Mayara
Alice Rebeca
Alice Renata
Alice Sofia
Alice Suzana
Alice Thamires
Amélia Augusta
Amélia Clara
Amélia Eduarda
Amélia Fernanda
Amélia Geovana
Amélia Heloísa
Amélia Isabel
Amélia Maria
Amélia Patrícia
Amélia Renata
Amélia Sofia
Ana Alicia
Ana Augusta
Ana Beatriz
Ana Carla
Ana Carolina
Ana Celia
Ana Clara
Ana Cláudia
Ana Cristina
Ana Daniela
Ana Gabriely
Ana Graciela
Ana Helena
Ana Isabel
Ana Julia
Ana Júlia
Ana Laura
Ana Letícia
Ana Luiza
Ana Luísa
Ana Lívia
Ana Lúcia
Ana Maria
Ana Paula
Ana Rosa
Ana Sofia
Ana Sophia
Ana Verônica
Ana Vitória
André Alessandro
André Alex
André Alexandre
André Camilo
André Carlos
André Cecílio
André Donato
André Eduardo
André Felipe
André Fernando
André Gabriel
André José
André Luís
André Marcelo
André Marco
André Marcos
André Mario
André Matheus
André Miguel
André Rafael
André Renato
André Ricardo
André Roberto
André Rodrigo
André Rogério
André Ronaldo
André Ronan
André Samuel
André Tiago
André Wilson
Angélica Beatriz
Angélica Maria
Angélica Natália
Angélica Sophia
Antônia Andréia
Antônia Beatriz
Antônia Camila
Antônia Carolina
Antônia Clara
Antônia Cristina
Antônia Daniela
Antônia Eduarda
Antônia Eliza
Antônia Fernanda
Antônia Iara
Antônia Inacia
Antônia Isabela
Antônia Joana
Antônia Kaoana
Antônia Laura
Antônia Letícia
Antônia Luiza
Antônia Maiara
Antônia Maria
Antônia Regina
Antônia Renata
Antônia Sofia
Antônia Suzana
Antônia Tamires
Antônia Thamires
Antônio Carlos
Antônio Marco
Antônio Marcos
Antônio Pedro
Artur Alex
Artur Anderson
Artur Angelo
Artur Antônio
Artur Cristiano
Artur Eduardo
Artur Felipe
Artur Fernando
Artur Gabriel
Artur Giovane
Artur Itacir
Artur José
Artur Luis
Artur Manuel
Artur Marcelo
Artur Mateus
Artur Mauricio
Artur Ricardo
Artur Roberto
Artur Thiago
Artur Vanderlei
Beatriz Aline
Beatriz Bianca
Beatriz Camila
Beatriz Cristina
Beatriz Daiana
Beatriz Daniela
Beatriz Diana
Beatriz Eduarda
Beatriz Elena
Beatriz Fernanda
Beatriz Inara
Beatriz Isabela
Beatriz Larissa
Beatriz Letícia
Beatriz Lucia
Beatriz Luíza
Beatriz Maria
Beatriz Rafaela
Beatriz Regina
Beatriz Renata
Beatriz Silvana
Beatriz Sofia
Beatriz Suzana
Beatriz Thamires
Beatriz Yara
Berenice Alice
Berenice Bianca
Berenice Cristina
Berenice Fernanda
Berenice Isabel
Berenice Louise
Berenice Maria
Berenice Regina
Betina Augusta
Betina Cristina
Betina Lorena
Betina Luíza
Betina Vitória
Betânia Cristina
Betânia Maria
Betânia Soraia
Bianca Alicia
Bianca Barbara
Bianca Beatriz
Bianca Clara
Bianca Clarisse
Bianca Cristina
Bianca Eduarda
Bianca Fernanda
Bianca Gabriela
Bianca Geovana
Bianca Helena
Bianca Isabella
Bianca Luiza
Bianca Luthiele
Bianca Maria
Bianca Marina
Bianca Rayana
Bianca Regina
Bianca Renata
Bianca Sofia
Bianca Sophia
Bianca Soraia
Bianca Suzana
Bruna Adriana
Bruna Alicia
Bruna Amélia
Bruna Andressa
Bruna Beatriz
Bruna Camila
Bruna Clarisse
Bruna Cristiana
Bruna Cristina
Bruna Eduarda
Bruna Fabiola
Bruna Fernanda
Bruna Geovana
Bruna Jamile
Bruna Joana
Bruna Kaoana
Bruna Laisa
Bruna Larissa
Bruna Lohaine
Bruna Lucia
Bruna Luiza
Bruna Maria
Bruna Mariana
Bruna Nayara
Bruna Pietra
Bruna Renata
Bruna Silmara
Bruna Sofia
Bruna Solange
Bruna Sophia
Bruna Soraia
Bruna Suzana
Bruna Tamara
Bruna Taynara
Bruna Thais
Bruna Thaisa
Bruna Valéria
Bruna Vanessa
Bruna Yara
Bárbara Alexa
Bárbara Andressa
Bárbara Beatriz
Bárbara Bianca
Bárbara Clarisse
Bárbara Cristina
Bárbara Diana
Bárbara Eduarda
Bárbara Elisa
Bárbara Elizangela
Bárbara Fernanda
Bárbara Geovana
Bárbara Janaina
Bárbara Luana
Bárbara Maria
Bárbara Mariza
Bárbara Regina
Bárbara Renata
Bárbara Suzana
Bárbara Tamara
Bárbara Thamires
Bárbara Vanessa
Bárbara Yasmin
Camila Cristina
Camila Eduarda
Carlos Alexandre
Carlos André
Carlos Daniel
Carlos Eduardo
Carlos Gilberto
Carlos Guilherme
Carlos Henrique
Carlos José
Carlos Luis
Carlos Marcos
Carlos Matheus
Carlos Otávio
Carlos Paulo
Carlos Ricardo
Carmem Lúcia
Carolina Helena
Caroline Eloísa
Cecília Maria
Clara Alicia
Clara Cristina
Cristina Maria
Daniela Alessandra
Daniela Aline
Daniela Aléxia
Daniela Alícia
Daniela Beatriz
Daniela Caroline
Daniela Elena
Daniela Fernanda
Daniela Francieli
Daniela Helena
Daniela Kristhie
Daniela Louise
Daniela Mayara
Daniela Raiane
Daniela Raíssa
Daniela Rebeca
Daniela Sophia
Daniela Stephanie
Daniela Thainara
Daniela Thainá
Daniela Thairine
Daniela Thaissa
Daniela Valentina
Daniela Viviana
Daniela Yohana
David Fernando
David José
David Luís
David Ricardo
Diego Alex
Diego André
Diego Augusto
Diego Eduardo
Diego Felipe
Diego Fernando
Diego Gabriel
Diego Henrique
Diego José
Diego Luís
Diego Renato
Diego Ricardo
Diego Rodrigo
Diego Thiago
Débora Cristina
Débora Eduarda
Débora Evellyn
Débora Fernanda
Débora Júlia
Débora Larissa
Débora Letícia
Débora Maria
Débora Priscila
Débora Regina
Débora Renata
Débora Sophia
Débora Vitória
Débora Viviane
Eduardo André
Eduardo Antônio
Eduardo Daniel
Eduardo Danilo
Eduardo Felipe
Eduardo Fernando
Eduardo Gabriel
Eduardo Giovanni
Eduardo Henrique
Eduardo José
Eduardo João
Eduardo Matheus
Eduardo Rafael
Eduardo Renato
Eduardo Rodrigo
Enzo Alex
Enzo André
Enzo Arnaldo
Enzo Daniel
Enzo Danilo
Enzo Eduardo
Enzo Felipe
Enzo Felipo
Enzo Fernando
Enzo Gabriel
Enzo Gilberto
Enzo Jean
Enzo Joao
Enzo José
Enzo Lucas
Enzo Luciano
Enzo Luís
Enzo Mateus
Enzo Matheus
Enzo Omar
Enzo Orlando
Enzo Patrick
Enzo Renan
Enzo Renato
Enzo Ricardo
Enzo Rodrigo
Enzo Tiago
Enzo Victor
Enzo Willian
Fernanda Alicia
Fernanda Beatriz
Fernanda Cristina
Fernanda Gabriela
Fernanda Lohaine
Fernanda Maria
Fernanda Sofia
Gabriel Alex
Gabriel Anderson
Gabriel Antônio
Gabriel Ariel
Gabriel Arnaldo
Gabriel Eliel
Gabriel Elisandro
Gabriel Felipe
Gabriel Felippo
Gabriel Fernando
Gabriel Henrique
Gabriel José
Gabriel Lucas
Gabriel Luís
Gabriel Maicon
Gabriel Matheus
Gabriel Samuel
Gabriel Thiago
Gabriela Antônia
Gabriela Beatriz
Gabriela Bianca
Gabriela Cristina
Gabriela Fernanda
Gabriela Isabela
Gabriela Kaoana
Gabriela Lorena
Gabriela Luíza
Gabriela Maria
Gabriela Mayara
Gabriela Regina
Gabriela Victória
Glória Carla
Glória Clara
Glória Cristina
Glória Maria
Glória Regina
Glória Sofia
Heloísa Augusta
Heloísa Cristina
Heloísa Fernanda
Heloísa Lúcia
Heloísa Maria
Heloísa Regina
Heloísa Sofia
Heloísa Suzana
Heloísa Vitória
Hugo Adriano
Hugo Otávio
Hugo Ricardo
Hugo Toma
Inês Cristina
Inês Maria
Inês Regina
Isabel Cristina
Isabel Maria
Isabel Regina
Isabela Cristina
Isabela Maria
Isabella Fernanda
Isabella Sophia
Jonas Alexandre
Jonas Amilton
Jonas Anderson
Jonas André
Jonas Antônio
Jonas Eduardo
Jonas Fernando
Jonas Inacio
Jonas José
Jonas Lorenzo
Jonas Mauricio
Jonas Ricardo
Jonas Tiago
Jonas Wilson
José Alexandre
José Augusto
José Carlos
José Daniel
José Fabricio
José Felipe
José Fernando
José Gilberto
José Gilmar
José João
José Marcelo
José Marcos
José Matheus
José Osmar
José Ricardo
José Roberto
José Rodrigo
João Carlos
João Gabriel
João Guilherme
João Henrique
João José
João Lucas
João Luís
João Miguel
João Paulo
João Pedro
João Ricardo
João Victor
João Vitor
João Vítor
Julio Alex
Julio Antônio
Julio Cesar
Julio César
Julio Daniel
Julio Eduardo
Julio Otávio
Júlio César
Kamilly Vitória
Laura Beatriz
Laura Cristina
Laura Daniela
Laura Isabel
Laura Isabela
Laura Liz
Laura Manuela
Laura Maria
Laura Marina
Laura Meire
Laura Mel
Laura Pamela
Laura Regina
Laura Sofia
Laura Verônica
Laura Vitória
Lucas Adriano
Lucas Alex
Lucas Alexandre
Lucas Anderson
Lucas Andre
Lucas Donato
Lucas Eduardo
Lucas Felipe
Lucas Fernando
Lucas Gabriel
Lucas Gilberto
Lucas Henrique
Lucas Leandro
Lucas Maurício
Lucas Miguel
Lucas Pedro
Lucas Ronaldo
Lucas Tiago
Luis Eduardo
Luis Felipe
Luis Fernando
Luiz Eduardo
Luiz Felipe
Luiz Fernando
Luiz Guilherme
Luiz Gustavo
Luiz Henrique
Luiz Miguel
Luiz Otávio
Luís Antônio
Luís Augusto
Luís Carlos
Luís Felipe
Luís Gustavo
Luís Otávio
Luís Ricardo
Manuel Afonso
Manuel Daniel
Manuel Danilo
Manuel Felipe
Manuel Fernando
Manuel Geovani
Manuel Inácio
Manuel José
Manuel Luís
Manuel Mariano
Manuel Miguel
Manuel Orlando
Manuel Renato
Manuel Ricardo
Manuel Vitor
Marcos Alexandre
Marcos André
Marcos Ariel
Marcos Bruno
Marcos Camilo
Marcos Eduardo
Marcos Felipe
Marcos Fernando
Marcos Gabriel
Marcos José
Marcos Manuel
Marcos Otávio
Marcos Paulo
Marcos Rafael
Marcos Renato
Marcos Ricardo
Marcos Vinicios
Maria Abela
Maria Adriana
Maria Adélia
Maria Alice
Maria Altina
Maria Amália
Maria Amélia
Maria Ana
Maria Anastácia
Maria Andressa
Maria Angelina
Maria Angélica
Maria Anselma
Maria Antonina
Maria Anália
Maria Aparecida
Maria Augusta
Maria Aurora
Maria Aurélia
Maria Cecilia
Maria Cecília
Maria Clara
Maria Cristina
Maria Eduarda
Maria Emília
Maria Estela
Maria Fernanda
Maria Gabriela
Maria Gabrielly
Maria Helena
Maria Isabel
Maria Julia
Maria Júlia
Maria Laura
Maria Luiza
Maria Paula
Maria Rosa
Maria Sophia
Maria Teresa
Maria Vitória
Maria Ágata
Maria Ângela
Mariana Beatriz
Mariana Clara
Mariana Clarisse
Mariana Cristina
Mariana Eduarda
Mariana Eliza
Mariana Fernanda
Mariana Isabela
Mariana Janaina
Mariana Marina
Mariana Nayara
Mariana Regina
Mariana Renata
Mariana Rosa
Mariana Sofia
Mariana Suzana
Mariana Vanessa
Marisa Antônia
Marisa Beatriz
Marisa Caroline
Marisa Cristina
Marisa Daniela
Marisa Eduarda
Marisa Elisa
Marisa Fernanda
Marisa Geovana
Marisa Helena
Marisa Inara
Marisa Joana
Marisa Kaoana
Marisa Marcela
Marisa Maria
Marisa Renata
Marisa Sofia
Marisa Viviane
Matheus Alex
Matheus Alexandre
Matheus André
Matheus Daniel
Matheus David
Matheus Eduardo
Matheus Felipe
Matheus Fernando
Matheus Gabriel
Matheus Henrique
Matheus Humberto
Matheus Inácio
Matheus José
Matheus Luiz
Matheus Manuel
Matheus Marcos
Matheus Miguel
Matheus Nilton
Matheus Orlando
Matheus Renato
Matheus Ricardo
Matheus Rogério
Matheus Samuel
Matheus Thiago
Matheus Valdecir
Matheus Wilson
Mayara Andressa
Mayara Beatriz
Mayara Caroline
Mayara Daniela
Mayara Elisa
Mayara Fernanda
Mayara Geovana
Mayara Maria
Mayara Marisa
Mayara Renata
Mayara Sofia
Miguel Aloísio
Miguel Conrado
Miguel Elias
Miguel Guilherme
Miguel Ângelo
oão Alex
Paulo Afonso
Paulo Alberto
Paulo César
Paulo Henrique
Paulo Marcos
Pedro Henrique
Pedro Lucas
Pedro Paulo
Ricardo Henrique
Ricardo José
Ricardo Manuel
Rodrigo Augusto
Rodrigo Luís
Rodrigo Manuel
Sabrina Andressa
Sabrina Bianca
Sabrina Camila
Sabrina Caroline
Sabrina Cristina
Sabrina Diana
Sabrina Eduarda
Sabrina Elisa
Sabrina Fernanda
Sabrina Geovana
Sabrina Isabela
Sabrina Laisa
Sabrina Luisa
Sabrina Marcela
Sabrina Maria
Sabrina Nayara
Sabrina Renata
Sabrina Sabine
Sabrina Sofia
Sabrina Thaisa
Sabrina Thamires
Serena Alice
Serena Beatriz
Serena Bianca
Serena Camila
Serena Caroline
Serena Cristina
Serena Daiana
Serena Daniela
Serena Eduarda
Serena Fernanda
Serena Gabriela
Serena Geovana
Serena Joana
Serena Kaoana
Serena Larissa
Serena Luíza
Serena Maria
Serena Mayara
Serena Melissa
Serena Patricia
Serena Regina
Serena Renata
Serena Silvana
Serena Sofia
Serena Sophia
Serena Thamires
Serena Vanessa
Serena Victória
Serena Vitória
Serena Yara
Sofia Amélia
Sofia Angélica
Sofia Beatriz
Sofia Clarisse
Sofia Cristina
Sofia Helena
Sofia Inara
Sofia Isabela
Sofia Lorena
Sofia Maria
Sofia Mariana
Sofia Marina
Sofia Valentina
Sofia Vitória
Sofia Yara
Suelen Bianca
Suelen Caroline
Suelen Cristina
Suelen Eduarda
Suelen Fernanda
Suelen Geovana
Suelen Helena
Suelen Laisa
Suelen Larissa
Suelen Marcele
Suelen Maria
Suelen Michele
Suelen Regina
Suelen Renata
Suelen Sofia
Suelen Thaisa
Suelen Vanessa
Suelen Yara
Thais Alexandra
Thais Andressa
Thais Cristina
Thais Elaine
Thais Fernanda
Thais Helena
Thais Isabella
Thiago Henrique
Tiago André
Tiago Luís
Tiago Matheus
Valdecir José
Vera Lúcia
Victor Gabriel
Victor Hugo
Victória Beatriz
Victória Caterina
Victória Elena
Victória Elisabeth
Victória Heloísa
Victória Hiorrana
Victória Isabel
Victória Lorena
Victória Luísa
Vilmar Eduardo
Vitor Gabriel
Vitor Hugo
Vítor Gabriel
Vítor Hugo
<?php
class Z_Name {
static private $compound_names = array();
static public function validate( $name ) {
$name = self::trim( $name );
return ( strlen( $name ) > 4 && strpos( $name, ' ' ) !== false );
}
static public function trim( $name ) {
$name = explode( ' ', trim( $name ) );
foreach ( $name as $key => $word ) {
$name[$key] = trim( $word );
}
return implode( ' ', $name );
}
static public function explode( $name ) {
$result = array( 'first_name' => '', 'last_name' => '' );
$name = explode( ' ', $name );
if ( count( $name ) < 3 ) {
$result['first_name'] = $name[0];
$result['last_name'] = isset( $name[1] ) ? $name[1] : '';
} else {
if ( $first_name = self::is_compound( implode( ' ', $name ) ) ) {
$result['first_name'] = $first_name;
$result['last_name'] = trim( mb_substr( implode( ' ', $name ), strlen( $first_name ), null, 'UTF-8' ) );
} else {
$result['first_name'] = $name[0];
unset( $name[0] );
$result['last_name'] = implode( ' ', $name );
}
}
return $result;
}
static public function is_compound( $name ) {
if ( count( self::$compound_names ) === 0 ) {
self::$compound_names = explode( "\n", file_get_contents( plugin_dir_path( __FILE__ ) . 'z-names-list.txt' ) );
}
foreach ( self::$compound_names as $compound_name ) {
if ( $compound_name == substr( $name, 0, strlen( $compound_name ) ) ) {
return $compound_name;
}
}
return false;
}
static public function sanitize( $name ) {
if ( self::is_uppercase( $name ) || self::is_lowercase( $name ) ) {
$name = explode( ' ', mb_convert_case( $name, MB_CASE_TITLE, 'UTF-8' ) );
foreach ( $name as $key => $word ) {
if ( in_array( $word, array( 'Do', 'Da', 'De', 'Del', 'La', 'Dos', 'Von' ) ) ) {
$name[$key] = mb_strtolower( $word, 'UTF-8' );
}
}
$name = implode( ' ', $name );
}
return $name;
}
static public function is_uppercase( $name ) {
$first_letter = mb_substr( $name, 0, 1, 'UTF-8' );
$second_letter = mb_substr( $name, 1, 1, 'UTF-8' );
return $first_letter === mb_strtoupper( $first_letter, 'UTF-8' ) && $second_letter === mb_strtoupper( $second_letter, 'UTF-8' );
}
static public function is_lowercase( $name ) {
$first_letter = mb_substr( $name, 0, 1, 'UTF-8' );
return $first_letter === mb_strtolower( $first_letter, 'UTF-8' );
}
}
<?php
namespace Library\ZName;
class ZName
{
static private $compound_names = [];
public static function validate($name)
{
$name = self::trim($name);
return (strlen($name) > 4 && strpos($name, ' ') !== false);
}
public static function trim($name)
{
$name = explode(' ', trim($name));
foreach ($name as $key => $word) {
$name[$key] = trim($word);
}
return implode(' ', $name);
}
public static function explode($name)
{
$result = ['first_name' => '', 'last_name' => ''];
$name = explode(' ', $name);
if (count($name) < 3) {
$result['first_name'] = $name[0];
$result['last_name'] = isset($name[1]) ? $name[1] : '';
} else {
if ($first_name = self::isCompound(implode(' ', $name))) {
$result['first_name'] = $first_name;
$result['last_name'] = trim(mb_substr(implode(' ', $name), strlen($first_name), null, 'UTF-8'));
} else {
$result['first_name'] = $name[0];
unset($name[0]);
$result['last_name'] = implode(' ', $name);
}
}
return $result;
}
public static function isCompound($name)
{
if (count(self::$compound_names) === 0) {
self::$compound_names = explode("\n", file_get_contents(dirname(__FILE__) . 'z-names-list.txt'));
}
foreach (self::$compound_names as $compound_name) {
if ($compound_name == substr($name, 0, strlen($compound_name))) {
return $compound_name;
}
}
return false;
}
public static function sanitize($name)
{
if (self::isUppercase($name) || self::isLowercase($name)) {
$name = explode(' ', mb_convert_case($name, MB_CASE_TITLE, 'UTF-8'));
foreach ($name as $key => $word) {
if (in_array($word, ['Do', 'Da', 'De', 'Del', 'La', 'Dos', 'Von'])) {
$name[$key] = mb_strtolower($word, 'UTF-8');
}
}
$name = implode(' ', $name);
}
return $name;
}
public static function isUppercase($name)
{
$first_letter = mb_substr($name, 0, 1, 'UTF-8');
$second_letter = mb_substr($name, 1, 1, 'UTF-8');
return $first_letter === mb_strtoupper($first_letter, 'UTF-8') &&
$second_letter === mb_strtoupper($second_letter, 'UTF-8');
}
public static function isLowercase($name)
{
$first_letter = mb_substr($name, 0, 1, 'UTF-8');
return $first_letter === mb_strtolower($first_letter, 'UTF-8');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment