Correcteur de ponctuation

Signaler
Messages postés
16
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
3 décembre 2013
-
Messages postés
16
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
3 décembre 2013
-
Salut tout le monde,

Quelqu'un connaîtrait-il un script PHP (genre avec des regex) pour corriger la ponctuation d'un texte (position des espaces avant/après les points, virgules, guillemets, parenthèses etc...) ?
J'ai commencé à en faire un mais je suis un peu limite en regex...
Merci d'avance !

Nebenobo
A voir également:

4 réponses

Messages postés
34
Date d'inscription
mardi 1 mai 2012
Statut
Membre
Dernière intervention
7 juillet 2017

Messages postés
16
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
3 décembre 2013

Merci bien mais je galère même avec tuto, quelqu'un a une fonction toute prête ou au moins une ébauche ?

Nebenobo
Messages postés
16
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
3 décembre 2013

ok bon après quelques heures de prise de chou j'arrive à un résultat nickel (pour ce que j'ai pu tester) sauf que la dernière regex de mon tableau ne marche qu'à moitié, j'aimerais bien comprendre pourquoi, si quelqu'un pouvait m'aider...
Si vous voyez autre chose qui ne marche pas correctement ou une optimisation, n'hésitez pas !

function corrige_ponct($string) {

$tab1 = array(
'`\s+`',//supprimer les espaces multiples
'`(:|;|\?|!)`',//autre ponctuation : espace avant et après
'`(\?|!)\s*(["\)])`',//autre ponctuation : pas d'espace après si suivi d'un guillemet ou parenthèse fermante
'`"\s*([^"]+)\s*"`',//guillemets : espace avant et après mais pas à l'intérieur
'`"\s*([^"]+)\s*"([\.,\)])`',//guillemets : pas d'espace après si suivi de point, virgule, espace ou parenthèse fermante
'`\(\s*([^\)]+)\s*\)`',//parenthèses : espace avant et après mais pas à l'intérieur
'`\(\s*([^\)]+)\s*\)([\s\.\),"])`',//parenthèses : pas d'espace après si suivie de point, virgule, espace, parenthèse fermante ou guillemet
'`\s*(\.|,)`',//point et virgule : espace après, pas avant
'`\s*\'\s*`',//apostrophes : pas d'espace avant ni après
'`([!\?\.])\s+([!\?\.])`');//supprimer les espaces entre point, point d'interrogation ou d'exclamation (ex : ? !! devient ?!!)

$tab2 = array(
' ',//espaces multiples
' $1 ',//autre ponctuation
' $1$2',//autre ponctuation 2ème partie
' "$1" ',//guillemets
' "$1"$2',//guillemets 2ème partie
' ($1) ',//parenthèses
' ($1)$2',//parenthèses 2ème partie
'$1 ',//point et virgule
'\'',//apostrophes
'$1$2');//supprimer les espaces entre caractères de ponctuation

$string = preg_replace($tab1,$tab2,$string);
return $string;
}

Vous pouvez tester avec le texte très mal ponctué suivant :

$texte = "En place pour commencer ? !! Une recette pour les gourmands!
Faire fondre le chocolat et le beurre( moi, j'aime bien gagner du temps alors je place le bol contenant ces deux ingrédients dans le micro onde pendant 2 minutes, ça y est c'est fondu!!). Bien mélanger les jaunes d'oeuf et le sucre afin d'obtenir un mélange blanc et mousseux à souhait! Alors là, super facile!! on ajoute le mélange "choco-beurre!". fondu, les amandes en poudre, la farine et on bat les blancs en neige très serrés( ils doivent former des mini vagues en surface!)! on va les incorporer au mélange sans trop les bousculer, à l'aide d'une "maryse"( on peut se dire: "Mais qu'est-ce que c'est?"... Et bien, une " maryse"est une spatule souple permettant de racler le fond des récipients!!) On prend un moule a manqué, on disperse les amandes effilées sur le fond bien beurré et on cuit le gâteau 45 minutes dans un four à 120°C environ. Voilà, vous pouvez dresser le gâteau sur une assiette. Bonne dégustation!";


Nebenobo
Messages postés
16
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
3 décembre 2013

ok j'ai posté la solution sur ce nouveau tutoriel, je pense qu'elle fonctionne correctement.


Nebenobo