Détecter une majuscule dans un mot - PHP

Résolu/Fermé
Utilisateur anonyme - 11 avril 2011 à 11:47
 Utilisateur anonyme - 12 avril 2011 à 08:21
Bonjour,

je suis actuellement à la recherche d'un script "passe partout". J'entends par là qu'une fois mis en place : il me suffirait de suivre une convention de nommage pour que le script fonctionne tout le temps.

Le cas est le suivant : j'ai une table qui se nomme " personne ".
Elle peut contenir X champs.

J'ai une page qui affiche les informations actuelles et en même temps un formulaire pour les modifier.

Ma convention de nommage est la suivante :

[information]_[nom de la table]
exemple : prenom_personne,
cp_personne
etc..

Code actuel :

data est un tableau contenant les informations d'une personne de la table.


foreach($data as $cle => $element)
{
    $mots = explode("_", $cle); //séparation des mots à chaque "_"

    /* Ici on obtient donc :
          mot[0] = cp
          mot[1] = personne */

   //J'affiche donc mon label pour chaque champ
     <label for=" ' .$cle. ' "> ' .$mots[0]. ' </label>
}


Le problème c'est que visuellement le formulaire n'est pas très explicite, vu qu'on voit apparaître :

cp 74000 [input de type text vide]

Je voudrais donc qu'à la place du cp on affiche : Code Postal

ma première idée était de nommer mon champ de cette façon :

codePostal_personne. Mais je ne trouve pas de fonction php pour détecter la majuscule.

On pourrait alors mettre un tableau contenant les 24 lettres de l'alphabet en majuscule et utiliser la fonction explode. Mais est-ce que ça ne serait pas lourd ?

Sinon écrire " code-postal_personne " et à nouveau utiliser explode.

Mais est-ce que ce n'est pas déconseillé de nommer un champ de cette façon dans la table ?

2)

Pour ce qui est du champ prenom :je voudrais mettre l'accent pour obtenir : Prénom.

Puis-je le mettre directement dans la bdd ? Sinon il me semble impossible de rajouter cette accents à moins de le spécifier dans le script.

  if(prenom_personne == $cle){
      mots[0] = "prénom";
  }


Et au final s'il y a 10 champs avec des accents je devrais faire les 10 champs ce qui n'est pas top !

Merci à ceux qui ont lu ce post :).

4 réponses

ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
Modifié par ktm620enduro le 11/04/2011 à 12:02
Avec ceci tu trouves dans $result la premiere majscule de $data...

if (preg_match('#^[^A-Z]*([A-Z])#',$data,$result))
$result=$result[1];
else unset($result);

Avec ceci tu trouves dans $result la premiere majscule ainsi que toute la suite de caracteres de $data...

if (preg_match('#^[^A-Z]*([A-Z].*)#',$data,$result))
$result=$result[1];
else unset($result);

Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
4
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
Modifié par ktm620enduro le 11/04/2011 à 12:03
j'ai modifié le code car j'avais oublié l'étoile dans la regex *
0
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
Modifié par ktm620enduro le 11/04/2011 à 19:24
function explode_maj($t=false){ if ($t) return explode(' ',trim(preg_replace('#([A-Z])#',' $1',$t)));} 

$k=explode_maj('SalutCeciEstUnTestPourVoirSiLaFonctionDiviseBienUnTexteTresLongLol'); print_r($k); 

$k=explode_maj('ApparamentCaFonctionneMEMEAvecUnSeulCaractèreOuDesChiffres57320ParExemple'); print_r($k); 

$k=explode_maj('Lol'); print_r($k);

retourne
Array ( [0] => Salut [1] => Ceci [2] => Est [3] => Un [4] => Test [5] => Pour [6] => Voir [7] => Si [8] => La [9] => Fonction [10] => Divise [11] => Bien [12] => Un [13] => Texte [14] => Tres [15] => Long [16] => Lol ) 

Array ( [0] => Apparament [1] => Ca [2] => Fonctionne [3] => M [4] => E [5] => M [6] => E [7] => Avec [8] => Un [9] => Seul [10] => Caractère [11] => Ou [12] => Des [13] => Chiffres57320 [14] => Par [15] => Exemple ) 

Array ( [0] => Lol ) 
0