Page 1 sur 1

séparer chaque phrases d'un texte ???

Posté : 24 févr. 2011, 14:09
par wwwbillgates
Bonjour, je souhaiterais séparer chaque phrases d'un texte au niveau du point, point, d'interogation et point d'exclamation pour les mettre dans un array.

exemple de texte:
$texte = "Aaaaaa. Bbbbbb ! Cccccc ? Dddddd.";

résultat souhaité:
Array (
[0] => Aaaaaa. (sans espace à la fin)
[1] => Bbbbbb ! (sans espace à la fin)
[2] => Cccccc ? (sans espace à la fin)
[3] => Ddddddd. (sans espace à la fin)
)

J'ai essayé avec explode et split mais il me supprime les .!? à la fin :(
Merci de votre aide

Re: séparer chaque phrases d'un texte ???

Posté : 24 févr. 2011, 14:20
par jojolapine

Re: séparer chaque phrases d'un texte ???

Posté : 24 févr. 2011, 17:04
par wwwbillgates
Merci beaucoup pour ton aide qui m'a permis de bien avancer, mais je ne sais pas ou j'ai fais l'erreur car ma boucle ne m'affiche que les 3 premiers résultats :(
$texte = "Aaaaaa. Bbbbbb ? Cccccc ! Ddddddd.";
	preg_match_all("#(.*(\.|!|\?))\s#Ui", $texte, $resultat, PREG_SET_ORDER);


$variable = 0;

while ($variable < 4)
{
    echo $resultat[$variable][0];

    $variable++;
}
résultat:
Aaaaaa. Bbbbbb ? Cccccc !
Notice: Undefined offset: 3 in blablabla on line 224

Re: séparer chaque phrases d'un texte ???

Posté : 24 févr. 2011, 17:31
par Mazarini
Bonjour,

$resultat[$variable]; ([0] est en trop;

Mais le mieux pour remplacer le while :
foreach($variable as $var) echo $var;

Re: séparer chaque phrases d'un texte ???

Posté : 24 févr. 2011, 17:40
par wwwbillgates
Bonjour et merci, mais si je retire le [0] j'ai le résultat suivant : ArrayArrayArray
Voici le résultat de mon print_r($resultat) :
Array ( [0] => Array ( [0] => Aaaaaa. [1] => Aaaaaa. [2] => . ) [1] => Array ( [0] => Bbbbbb ? [1] => Bbbbbb ? [2] => ? ) [2] => Array ( [0] => Cccccc ! [1] => Cccccc ! [2] => ! ) )

Je pense que le soucis est plutot au niveau de mon preg_match_all :(

Re: séparer chaque phrases d'un texte ???

Posté : 24 févr. 2011, 19:54
par wwwbillgates
ah ayé j'ai trouvé il manquait juste un espace à la fin de mon texte après mon point pour que celui-ci soit pris en compte, merci et bonne soirée... :)