Page 1 sur 1

Mettre le Premier Caractère de Chaque Ligne en Majuscule

Posté : 01 mars 2006, 01:44
par qmeuh
Salut à tous !

Eh beh le titre dit tout héhé
Je sais que pour mettre le premier caractère d'une chaine en majuscule on fait ucfirst() mais pour selectionner séparement chaque ligne ... boh :(

Merci d'avance !

EDIT : Est-ce que ca fonctionnerait avec strtok() ? Pour découper la chaine en morceau en utilisant \n comme séparateur ?

Posté : 01 mars 2006, 09:58
par Ripat
Possible à faire avec le traitement de chaîne conventionnel:
file() -> boucle sur les lignes -> ucfirst() -> boucle pour reconstituer le texte.

Ou bien, plus court (pas nécessairement plus lent - à tester):
function myUcfirts($captures){
  return strtoupper($captures[0]);
}

$txt = preg_replace_callback('´^\w´m', 'myUcfirts', $txt);

echo '<pre>'.$txt.'</pre>';
Edit: version traitement de chaînes
$aTxt = explode("\n", $txt);
foreach($aTxt as $v){
  $out .= ucfirst($v)."\n";
}
echo '<pre>'.$out.'</pre>';
Pas de différences notable en vitesse d'exécution.

Posté : 01 mars 2006, 21:28
par qmeuh
Merci beaucoup ! Fonctionne très rapidement et parfaitement ...
J'ai ajouter trim() dans la boucle pour supprimer les espaces superflus :wink: -> D'une pierre 2 coups :p

Posté : 01 mars 2006, 21:46
par albat
Un p'tit [Résolu] alors ? ;)