Split chaîne de texte dans le $premier $et nom de famille en php
Je suis l'élaboration d'un message privé, système qui permet aux utilisateurs de rechercher un utilisateur par son nom complet, par exemple: "George Washington".
J'ai deux variables nommées $firstname
et $lastname
, et la fonction de recherche les résultats sont classés par pertinence (combien de fois vous avez messaged la personne). Comment puis-je obtenir un champ de texte pour split "George Washington" dans $firstname="George"
et $lastname="Washington"
?
Vous devez vous connecter pour publier un commentaire.
J'aime cballou réponse parce qu'il y a un effort pour vérifier si il n'y a qu'un prénom. J'ai pensé que je pourrais ajouter mes fonctions pour quelqu'un d'autre qui vient lookin'.
Simple Fonction, en Utilisant les Regex (word char et de tirets)
Voici le code:
Ex 1:
split_name('Angeler')
sorties:Ex 2:
split_name('Angeler Mcgee')
sorties:Ex 3:
split_name('Angeler Sherlee Mcgee')
sorties:Pour obtenir le premier et le deuxième prénom de split,
Ex 4:
split_name('Angeler Sherlee')
sorties:Une Autre Fonction Détecte Les Prénoms Trop
Plus tard, j'ai décidé qu'il serait agréable d'avoir le nom du milieu déduit automatiquement, le cas échéant, donc j'ai écrit cette fonction.
Ex 1:
split_name('Angeler Sherlee Mcgee')
sorties:Ex 2:
split_name('Angeler Mcgee')
sorties:D'Une Autre Manière - Sans Regex
Décidé d'ajouter une autre manière de ne pas utiliser des regex.
Il a également
return false;
pour les non-reconnaissable noms (null, chaîne vide, trop nombreux groupes de parole à déduire).Sorties
#.*\s([\w-']*)$#
La façon la plus simple est, en utilisant exploser:
Après vous avoir les pièces, de la pop à la dernière, comme
$lastname
:Enfin, imploser dos le reste de la matrice comme votre
$firstname
:exemple:
Aurait pour résultat:
array_pop
déclaration est nécessaire. Par exemple, si vous avez juste besoin de la première du nom.if (count($parts) == 1) {$firstname = $name;$lastname = ''}
$name = "bob"
$parts = explode(" ", $name); if(count($parts) > 1) { $lastname = array_pop($parts); $firstname = implode(" ", $parts); } else { $firstname = $name; $lastname = " "; }
$parts[0]
comme$name[0]
... Cependant, comme il est, @Joel Joseph réponse est bien.si vous avez exactement 2-saisie du mot de vous pouvez utiliser
list()
de toute façon, vous pouvez utiliser
explode()
Dans ma situation, j'ai juste besoin d'un moyen simple d'obtenir la première et la dernière, mais compte pour la base de prénoms:
De sortie:
Bien sûr, si vous êtes sérieux à vouloir intelligente, l'analyse des noms, alors quelque chose comme cette (ou similaire) peut être de quelque utilité.
http://php.net/manual/en/function.explode.php
Voici une réponse avec quelques vérification des limites.
Même si les réponses ci-dessus sont corrects, ils ne fournissent pas toute forme de limites de la condition vérifications pour s'assurer que vous avez un nom valide pour commencer. Vous pouvez aller à ce sujet avec un
strpos()
vérifier pour voir si un espace existe. Voici un plus approfondie exemple:Il est intéressant de noter que cela suppose que le nom est un mot unique, alors que le prénom peut être n'importe quelle combinaison. Pour l'effet inverse, de changer de
array_pop()
pourarray_shift()
.Entraînerait:
J'utilise cela, il divise même les noms avec et, & et /etc où plusieurs noms sont là
Exemple de sortie Hanna et Mykhoylo Ilyashevych
(
[0] => Array
(
[firstname] => Hanna
[middlename] =>
[nom] => Ilyashevych
)
)
J'ai trouvé ce servi à mes besoins mieux. Il prend le premier mot que le nom de la première et de morceaux le reste que le nom.
Donc mon cas d'utilisation a été pour extraire le nom d'un médecin, en fonction de formé les utilisateurs d'entrée. J'ai donc écrit cette fonction pour détecter le dernier-virgule-premier scénario et de divers titres et suffixes que je rencontre.
Hypothèses
encore testé. Je vais essayer de me rappeler de mettre à jour ce post que je patch de la fonction.
chaque cas d'utilisation comme une liste exhaustive serait en fait être préjudiciable
la fonctionnalité. (par exemple, Un "Mme Bishop" ou "M. Ma" serait vide)
Code
Sortie
Ici est une façon très simple de diviser nom complet dans de nom et de prénom
Avec Le Nom
Code :
De sortie:
Cela va ignorer le moyen et juste obtenir le premier et le dernier.