Page 1 sur 1

Recup de donnée

Posté : 13 févr. 2015, 16:42
par kakou34
Bonjour,

Après une récupération de donnée dans ma BDD, pour un système d'actualité,
j'aimerai qu'automatiquement une majuscule ce mette après chaque point '.'

Mais j’avoue que je sais pas trop comment faire oO

Si vous pouviez m'aider ou me mettre sur la piste :)

Merci d'avance

Re: Recup de donnée

Posté : 13 févr. 2015, 16:50
par tof73
http://php.net/manual/fr/function.strpos.php pour trouver le 1er point
la même fonction avec le paramètre offset pour trouver les occurences suivantes.

http://php.net/manual/fr/function.strtoupper.php pour mettre en majuscules le 1er caractère suivant ce point qui est une lettre ( http://php.net/manual/fr/function.ord.php un moyen de tester).

Re: Recup de donnée

Posté : 14 févr. 2015, 15:42
par kakou34
Je comprend pas trés bien,

$contenu = Mon contenu avec tous mes points
$recherche = Le point '.'

J'ai donc $variable = strpos($contenu, $recherche)

Quand je fais echo il me sort la position du 1er point.
Niquel, par contre je comprend pas le offset, il me sert juste à 'localiser' un point précis, mais si je veux justement TOUS les points du contenus.

$variable = strpos($contenu, $recherche, 0) Quel chiffre dois-je mettre ?
Donc du coup je sais ou mettre le strtoupper :/

Re: Recup de donnée

Posté : 17 févr. 2015, 16:14
par kakou34
Un petit UP

Re: Recup de donnée

Posté : 17 févr. 2015, 16:59
par Megadeth
Slt,

J'avais fait un truc dans ce style mais il faut être sur d'avoir un espace après ton "."
<?php 
$contenu = "le contenu avec Tous Mes points. je suis fatigué vivement les vacances.";
$actus = explode('. ', $contenu);
$count = count($actus);
var_dump($actus);
for($i=0;$i<=$count;$i++)
{
$eachstring = $actus[$i];
echo "<br />";
echo ucfirst($eachstring);
}

?>
Mega
;)

Re: Recup de donnée

Posté : 17 févr. 2015, 17:14
par ynx
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