Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1924 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Couper une chaine de caracteres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Couper une chaine de caracteres

n°1988074
Jarod511
****
Posté le 27-04-2010 à 15:45:08  profilanswer
 

Bonjour,
 
J'ai un petit problème assez particulier. Dans ma base de données, j'ai une colonne contenant le nom et le prénom sous la forme suivante : NOM Prénom
 
Sachant que le Nom sera toujours en majuscule et le prénom en minuscule avec seulement la première lettre en majuscule. Ce que je voudrais faire c'est découper cette chaine de caractères en deux afin de séparer le nom du prénom puis les insérer dans une table avec le nom dans la colonne nom et prenom dans la colonne prenom.
 
En fait j'ai utilisé la fonction

Code :
  1. explode(' ', $str);


 
qui marche bien pour le cas où l'on est dans la configuration NOM Prenom. Le problème survient lorsque j'ai un nom composé du genre NOM DE NOM Prenom et là je coince je vois pas trop comment faire un algorithme générique.
 
Si quelqu'un a idée, ça serait bien.

mood
Publicité
Posté le 27-04-2010 à 15:45:08  profilanswer
 

n°1988081
rufo
Pas me confondre avec Lycos!
Posté le 27-04-2010 à 15:56:43  profilanswer
 

ben à moins d'avoir une BD de tous les prénoms, tu as un gros pb car si le gars à un nom composé et un prénom composé et que pour le prénom, il met pas le -, t'es mal :/
 
Normalement, tu devrais découper sur le dernier espace puisque les prénoms composés sont séparés par le -, ce qui n'est pas le cas des noms...
Pour mon soft Astres (cf signature), j'ai implémenté un algo de calcul de trigramme (voire plus de lettres dans le cas de nom-prénom composés justement). J'avais donc presque le même pb que toi, la seule différence, c'est que la séparation nom prénom était déjà faite.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1988108
art_dupond
je suis neuneu... oui oui !!
Posté le 27-04-2010 à 16:22:18  profilanswer
 

en jouant avec preg_match() ?

 


Code :
  1. $string = "COUCOU COUCOU coucou coucou";
  2. $pattern = '/^([A-Z ]*) ([a-z ]*)$/';
  3. preg_match($pattern,$string,$matches);
  4. print_r($matches);
 

Array
(
    [0] => COUCOU COUCOU coucou coucou
    [1] => COUCOU COUCOU
    [2] => coucou coucou
)


Message édité par art_dupond le 27-04-2010 à 16:29:40

---------------
oui oui
n°1988117
Jarod511
****
Posté le 27-04-2010 à 16:37:31  profilanswer
 

Salut,
 
Merci pour vos réponses, c'est super cool. J'étais parti sur le schéma suivant :
 
Compte le nombre de majuscule
Pour i=0 jusqu'à nombre de majuscule-1  
Faire un explode
Stock le NOM dans une colonne et le prenom dans une autre => peut être que je devrais utiliser les matrices ???
Stock dans la BDD le nom dans colonne nom et le prénom dans la colonne nom
 
Pour compter le nombre de majuscule j'ai fais :
 

Code :
  1. function countUppercase($string) {
  2.      return preg_match_all("/[A-Z]/", $string, $result);
  3. }


 
Qu'en pensez vous ?
 
art_dupond, merci pour ton code, par contre, si je veux ensuite stocker le nom et le prenom dans ma BDD je ne dois pas insérer la valeur [0] ?
 
Est ce que ton code peut marcher en faisant un select que je stock ma variable $string ???

n°1988142
Jarod511
****
Posté le 27-04-2010 à 17:22:43  profilanswer
 

Par contre, je n'arrive pas à decouper toutes mes lignes de ma table, ça me le fait uniquement que pour la première ligne.
 

Code :
  1. $pattern = '/^([A-Z ]*) ([a-z ]*)$/';
  2. while ($rows = odbc_fetch_object($result)) {
  3.     //print $rows->morph;
  4. preg_match($pattern,$rows->morph,$matches);
  5. print_r($matches);
  6.     }

n°1988237
erwan83
Du Shift DEL tu te méfieras !
Posté le 28-04-2010 à 07:35:36  profilanswer
 

Si je peux me permettre de rebondir sur ce sujet...
J'ai un cas un peu different :
Je dois afficher une phrase qui doit faire entre 50 et 150 chr
je veux donc afficher la phrase sur deux lignes
je coupe ma chaine mais c'est CRACRA
 
=> comment couper la chaine sur un ESPACE et non en plein milieu d'un mot ?


---------------
http://www.ypikay.com
n°1988270
rufo
Pas me confondre avec Lycos!
Posté le 28-04-2010 à 09:40:04  profilanswer
 

ben tu repères le caractère où tu coupes et ensuite, tu recherches l'espace le plus proche (recherche à gauche et à droite et tu prends la distance min).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1988290
erwan83
Du Shift DEL tu te méfieras !
Posté le 28-04-2010 à 10:27:29  profilanswer
 

oui j'y avais pensé mais c'est lourd...
ok merci !


---------------
http://www.ypikay.com
n°1988617
Jarod511
****
Posté le 29-04-2010 à 10:02:35  profilanswer
 

Hello,
 
Est ce que quelqu'un aurait une idée pourquoi ça me découpe uniquement que pour la première ligne de la colonne de ma table ???
 

Code :
  1. while ($row = odbc_fetch_row($result)) {
  2. preg_match($pattern,odbc_result ($result,1),$matches);
  3. print_r($matches);
  4. }

n°1988622
rufo
Pas me confondre avec Lycos!
Posté le 29-04-2010 à 10:10:00  profilanswer
 

en 2ième argument, preg_match attend une string et pas un tableau, ça doit être pour ça.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Couper une chaine de caracteres

 

Sujets relatifs
Pb pour rentrer une chaine de caractere dans un tableau !Comparaison de chaines de caracteres dans 2 listes en VBA
Langage C : concaténation de chaines de caractèresRécupérer les mots séparés par des espaces dans une chaîne de char....
[MYSQL] Lister valeur supérieure ou égale à 8 caractèresfonction strlen calcule de la longueur de chaine
[Javascript/PHP ?] Couper une chaine de caractères en morceaux[PHP] Couper une chaîne avec caractères html ?
[PHP] Couper une chaîne de caractères...[PHP]-> Reg. Exp. -> couper une chaine > X caractères ..
Plus de sujets relatifs à : Couper une chaine de caracteres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR