Bonjour,

je cherche à travailler une chaine contenant des majuscules.
Je m'explique, j'ai une chaine de type : TestUserTable
Ce que je veux : testuser
Donc j'aimerais savoir comment detecter la separation par majuscule pour inserer les "
".
ensuite un str_replace pour enlever le "Table".

3 réponses


cid5420
Auteur
Réponse acceptée

Pour ceux que ça interesse, j'ai résolu mon problème.

$var  = "FtthUserTypeTable";
$key = preg_split('/(?=[A-Z])/', $var, -1, PREG_SPLIT_NO_EMPTY);
foreach($key as $k){
    $repl[] = strtolower("_".$k);
}
$rep = implode($repl);
$rep1 = str_replace('_table', '', $rep);
$rep2 = str_replace('_ftth', 'ftth', $rep1);

var_dump($rep2);

ce que j'obtiens est : ftth_user_type

Bonjour,

Je pense que ce lien peut t'aider. Tu devras travailler avec des expressions régulières pour afficher à tes fins :
http://stackoverflow.com/questions/1993721/how-to-convert-camelcase-to-camel-case

cid5420
Auteur

Merci, pour cette réponse.
J'utilise les regex pour séparer les mots d'une chaine avec les majuscules.
Ensuite j'arrive à inclure le "" devant. Après je bloque sur le fait que je ne veux pas avoir de "" pour l'élément 0, qu'il peut y avoir plusieurs mots dans une chaine (aleatoire) et surtout comment afficher ce que j'obtiens ?

un peut de code !

$var  = "FtthUserTable";
$key = preg_split('/(?=[A-Z])/', $var, -1, PREG_SPLIT_NO_EMPTY);
foreach($key as $k){
    $repl = strtolower("_".$k);
    var_dump($repl);
}

j'obtiens
string '_ftth' (length=5)
string '_user' (length=5)
string '_table' (length=6)

parce que là en l'état, j'ai 3 string, moi au final je veux la recomposer ! ftth_user_table, si j'obtiens ça, après je fais ce que je veux !