Mammouth du PHP |
586 Messages
17 févr. 2015, 17:14
Salut,
Une autre solution possible (il doit également y avoir un espace après le point) :
$contenu = 'lorem ipsum dolor sit amet. consectetur adipiscing elit. quisque mauris nulla.';
// on découpe le contenu en phrases
$phrases = explode('. ', $contenu);
// on remplace la première lettre par une majuscule
$phrases = array_map('ucfirst', $phrases);
// on rassemble nos phrases
$contenu = implode('. ', $phrases);
var_dump($contenu); // string(78) "Lorem ipsum dolor sit amet. Consectetur adipiscing elit. Quisque mauris nulla."
La même version avec utilisation de la fonction trim(), permettant de gérer le cas où il n'y as pas d'espace après le point :
$contenu = 'lorem ipsum dolor sit amet.consectetur adipiscing elit.quisque mauris nulla.';
$phrases = explode('.', $contenu);
$phrases = array_map('trim', $phrases);
$phrases = array_map('ucfirst', $phrases);
$contenu = implode('. ', $phrases);
var_dump($contenu); // string(78) "Lorem ipsum dolor sit amet. Consectetur adipiscing elit. Quisque mauris nulla."
Le problème de la fonction ucfisrt() est qu'elle ne gère pas les caractères multi-octet. Si tu souhaites pouvoir gérer ces caractères, tu peux utiliser la fonction proposée dans le premier commentaire de la doc de ucfirst() :
http://php.net/manual/fr/function.ucfirst.php#Hcom87133
Bonne journée