Remplacé le premier caractère d'une chaine


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Remplacé le premier caractère d'une chaine

Message le Mar Oct 04, 2005 21:47

Comment remplacer le premier caractère d'une chaîne par un autre, en fonction de ce premier caractère ?

Je ne trouve pas de fonctions à ce sujet.
Dernière édition par medium69 le Mar Oct 04, 2005 21:52, édité 1 fois.

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mar Oct 04, 2005 21:49

une chaine de caracteres peut etre interpretée comme un tableau de caracteres.

en conséquent,
Code: Tout sélectionner
$var[0] = 'p';

ceci aura pour effet de mettre comme premier caractere à $var le caractere p

ps, c'est remplacer :lol:


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Mar Oct 04, 2005 21:52

Pour prendre un exemple concret :

j'ai une variable
Code: Tout sélectionner
$var = 'égypte'

je veux mettre la première lettre en majuscule...

Je me sert habituellement de ucfirst($var).
Mais dans le cas d'une variable avec un caractère accentué ?

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mar Oct 04, 2005 21:53

euh bah, dans le cas d'une variable avec un caractere accentué, je pense que c'est geré. il te fait quoi la ?


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Mar Oct 04, 2005 21:54

justement, il ne le gère pas :(

ça reste en minuscule


http://www.php.net/manual/fr/function.ucfirst.php

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mar Oct 04, 2005 22:01

Code: Tout sélectionner
$var = 'égypte';
$array1 = array('é', 'è');
$array2 = array('É', 'E');

if ($k = array_search($var[0], $array1)) {
    $var[0] = $array2[$k];
} else {
    $var = ucfirst($var);
}


fait de tete.
je pense que ca devrait fonctionner. tu place tous tes caracteres spéciaux dans $array1, et les memes caracteres, en normal, dans $array2 (j'ai pas retrouvé le code caractere du è majuscule dsl)


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Mar Oct 04, 2005 23:13

Ta solution ne marchait pas mais je m'en suis inspiré :

Code: Tout sélectionner
$var = ucfirst($chaine);
$var = strtr($var[0], 'é, è', 'É, È');
$var .= substr($chaine, 1);


Comme cela ça marche nickel


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité