Recup de donnée

Eléphant du PHP | 69 Messages

13 févr. 2015, 16:42

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

Mammouth du PHP | 688 Messages

13 févr. 2015, 16:50

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).

Eléphant du PHP | 69 Messages

14 févr. 2015, 15:42

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 :/

Eléphant du PHP | 69 Messages

17 févr. 2015, 16:14

Un petit UP

Mammouth du PHP | 737 Messages

17 févr. 2015, 16:59

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
;)
Dyslexics are teople poo

ynx
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