mettre la premiere lettre en majuscule

Eléphanteau du PHP | 18 Messages

24 mars 2011, 14:34

bonjour,

j'ai un texte qui ressemble à : <p>salut ca va </p> ou à <p> salut ca va </p>

Je veux mettre la première lettre du mot en majuscule , mais j'ai une balise <p> avant et j'aimerais enlever les espaces si il y en a entre la balise <p> et le premier mot.

Comment dois je faire cela??

J'ai essayer plein de chose avec urcfirst :
$test = "<p>youpi youpla boum";
$test = ucfirst($test);	
$test = preg_replace('#&nbsp;#', '', $test);

echo $test;

Mammouth du PHP | 672 Messages

24 mars 2011, 14:52

Un conseil :
Apprends à décomposer ce que tu veux faire en petites actions, tu n'auras peut-être pas le meilleur résultat mais ça t'assure d'obtenir le résultat.
Et au pire, comme tu décomposes tu peux facilement débugger...

1. Suppression des balises de paragraphe => preg_replace()
2. Suppression des espaces à gauche => ltrim()
3. Forcer la majuscule => ucfirst()
4. Remettre les balises

Eléphanteau du PHP | 18 Messages

24 mars 2011, 15:04

ok
c vrai que ca parait plus clair comme ca.
Mais comment remettre les balises au début et à la fin ? :shock:

Mammouth du PHP | 672 Messages

24 mars 2011, 15:27

Mais comment remettre les balises au début et à la fin ? :shock:
$test = "<p> youpi youpla boum</p>";
$resultat = PremiereLettreMajuscule($test);
$ResultatAvecBalises = '<p>'.$resultat/'</p>';
:mrgreen:

Si tu as besoin de faire ça avec des balises quelconques, ça se complique un peu, mais ça reste jouable. Par exemple :

1. Suppression des balises de paragraphe => preg_replace()
2. Suppression des espaces à gauche => ltrim()
3. Forcer la majuscule => ucfirst()
4. Remplacer dans le texte original le résultat de 1. par le résultat de 3.

ViPHP
ViPHP | 2291 Messages

24 mars 2011, 21:10

Salut,

Comme ceci je pense
<?php
$test = "<p>youpi youpla boum</p>";
$test = ltrim(strip_tags($test));
echo '<p>' . ucfirst($test) . '</p>';

?>
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 5462 Messages

24 mars 2011, 21:26

c'est plutôt en CSS que ça doit se faire, avec :first-letter