Expression régulière simple - Détection de phrase collée [Résolu]

Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013
- - Dernière réponse : wizard512
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013
- 11 mai 2013 à 19:30
Bonsoir à tous,

Voilà, j'ai un soucis assez ennuyeux , je dispose d'un ensemble de donnée structuré dans un fichier XML que je souhaite inséré dans une base de donnée à l'aide de php (dom), jusqu'ici rien de bien compliqué...

Mais j'ai remarqué que dans certains noeuds qui contiennent des paragraphes entiers, des phrases étaient collées..

Par exemple nous avons des : "mot mot mot.Mot mot mot"

Donc pour les décollés j'ai fais passer automatiquement chaque paragraphe par un preg_replace pour les décollés avec cette expression régulière :
/(.*)\.(\w)/i

Or, le fonctionnement de cette expression régulière est assez aléatoire...

Je m'explique, au vu des résultats elle n'a pas l'air de marcher sur les mots avec une ponctuation collée (ex.: "mot mot mot.Mot, mot mot") et aussi sur les mots très cours (ex.: "mot mot mot.Du mot mot mot").

De plus j'aurai bien voulu rajouter aussi d'autres ponctuations de fin de phrase de type "?" "!" ";" et donc n'étant pas très fort dans le domaine des expressions régulière je me demandé si quelqu'un avait une meilleur "expression" à faire passer à mon preg_replace

Cordialement Adam.
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013
3
Merci
$chaine = preg_replace('/([\.,])(\S)/', '$1 $2', $chaine);
$chaine = preg_replace('/(\S)([!?;])(\S)/', '$1 $2 $3', $chaine);
$chaine = preg_replace( '/(\d)\.\s(\d)/' , '$1.$2' , $chaine ) ;

Merci à RadicalDingos

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de wizard512