A la hora de detectar el genero de una persona en base al nombre, nos podemos ayudar de dos servicios web, gender API y Genderize.io. Los dos funcionan estupendamente, y los dos tienen un limite de peticiones, y funcionan los dos muy rápidos, y tienen los dos un funcionamiento prácticamente igual. He creado un gist que usa los dos servicios, por defecto usa Gender API, y que esta configurado para España, aunque se puede cambiar para cualquier país cambiando el código de país.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function generoPersona($nombre, $provider = 'genderAPI') | |
{ | |
$providers = array( | |
'genderAPI' => array( | |
'url' => 'https://gender-api.com/get?name=', | |
'pais' => '&country=ES' | |
), | |
'genderize' => array( | |
'url' => 'https://api.genderize.io/?name=', | |
'pais' => '&country_id=es' | |
) | |
); | |
if (array_key_exists($provider, $providers)) { | |
$dataProvider = $providers[$provider]; | |
} | |
$generoPersona = 'Hombre'; | |
$curl = curl_init($dataProvider['url'].$nombre.$dataProvider['pais']); | |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); | |
$result = json_decode(curl_exec($curl)); | |
if (is_a($result, 'stdClass') && property_exists($result, 'gender')) { | |
$generoPersona = ($result->gender == 'female')? 'Mujer' : 'Hombre'; | |
} | |
return $generoPersona; | |
} |
Mas info: https://gender-api.com y https://genderize.io