Vous êtes ici Codes PHP et MySQL > Fonctions > Corrige la ponctuation d'un texte

 

Corrige la ponctuation d'un texte

Il vous manque un espace après le point de la fin d'une phrase ou une majuscule après un point ? Cette fonction est faite pour corriger ce type de faute de ponctuation d'un texte. Elle se veut complète car elle ne modifie pas le texte autre que la ponctuation lors de la correction.
Voir plus bas ce que fait la correction et les éléments du texte que la correction n'affecte pas.

Ce que fait la correction

. place un espace après un signe de ponctuation
. place une majuscule au début du texte
. met une majuscule au mot qui suit un signe de ponctuation
. enlève les espaces en début et fin de chaine

Important: Ce que la correction n'affecte pas

. les 3 ou série de 2 points (...)
. les smileys
. les série de signes ?!?!?
. les cotes simples et doubles ' et "
. le HTML
. les URLs (car la correction n'est pas lancé)
. les adresses emails (car la correction n'est pas lancé)
. les N° de tél : 01.04.01...
. les nombres 0.10...
 
KOogar
Site de l'auteur voir
[62] sources en PHP voir
Code vu 1104 fois
Enregistré le 28 Fév 2010
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Corrige la ponctuation d'un texte
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Corrige la ponctuation d'un texte                         */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts573-PHP.htm              */
/* Auteur         : KOogar                                                    */
/* Date édition   : 28 Fév 2010                                               */
/* Website auteur : http://www.phpsources.org                                 */
/*                                                                            */
/******************************************************************************/


 function corrige_ponctuation($chaine) {

/*****************************************************************************/
/* initialisation                                                            */
/*****************************************************************************/


  $signes = array(".","!","?",",",":",";");
  $signes_connexe = array('"',")",">","'");
  $i=0;
  $taille_chaine strlen$chaine );

  $masque_url  '#';
  $masque_url .= '([http|ftp|https]+://';
  $masque_url .= '[www\.]?';
  $masque_url .= '[\.\-a-zA-Z0-9]*';
  $masque_url .= '[a-zA-Z]{2,4}?';
  $masque_url .= '[\?/\=\&\-_.a-zA-Z0-9]+?';
  // si vous avez + de repertoires a analyser, ajouter + de lignes
  // comme la ligne modele ci dessous :
  $masque_url .= '[\?/\=\&\-_.a-zA-Z0-9]+?';
  // fin ligne modele
  $masque_url .= '[\?/\=\&\-_.a-zA-Z0-9]+)';
  $masque_url .= '#i';
  // FIN MASQUE

  $masque_email  '#';
  $masque_email .= "[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*";
  $masque_email .= "@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})+";
  $masque_email .= '#';

/*****************************************************************************/
/* Si 1 url ou 1 adresse email est dans le texte, la correction est arreter  */
/*****************************************************************************/

if (!preg_match_all($masque_url,$chaine,$match_1) and
    !preg_match_all($masque_email,$chaine,$match_2)
   )
 {
/*****************************************************************************/
/* debut correction                                                          */
/*****************************************************************************/
  while ( $i $taille_chaine )
    {
    // met la premiere lettre du texte en majuscule
    if ($i==0$chaine[$i] = strtoupper($chaine[$i]);
    // capture la chaine deja analysée
    $capture .= $chaine[$i];


/*****************************************************************************/
/* correction de la ponctuation                                              */
/*****************************************************************************/

      // si le caractere fait partie des signes
      // si le caractere suivant n'est pas un espace
      // si le caractere suivant n'est pas un numérique
      // si le caractere précedent n'est pas un numérique
      // si on n'est pas en fin de chaine
      // n'affecte pas les 3 ou série de 2 points (...)
      // n'affecte pas les smileys ;) ou :)
      // n'affecte pas les série de signes ?!?!?
      // n'affecte pas les guillemets simples et doubles ' et "

      if( in_array($chaine[$i],$signes )
               and $chaine[$i+1] != ' '
               and !is_numeric$chaine[$i+1] )
               and !is_numeric$chaine[$i-1] )
               and ($chaine[$i+1] < $taille_chaine)
               and ($chaine[$i+1] != '.')
               and ($chaine[$i+1] != in_array($chaine[$i+1],$signes ))
               and ($chaine[$i+1] != in_array($chaine[$i+1],$signes_connexe ))
                                       )
       {
        $capture_trans $capture.' ';
        // insere le point + 1 espace
        $chaine str_replace$capture$capture_trans$chaine );

        // met la lettre en majuscule si on ne traite pas une virgule
        if($chaine[$i] != ',')
        $chaine[$i+2] = strtoupper($chaine[$i+2]);
       }

/*****************************************************************************/
/* met une majuscule apres un signe                                          */
/*****************************************************************************/
     if (in_array($chaine[$i],$signes ) and ($chaine[$i+1] == ' ')
                                        and ($chaine[$i] != ',') )
      $chaine[$i+2] = strtoupper($chaine[$i+2]);

      $i++;
    }

   }
   return trim($chaine);
  } ?>

 

Fonctions du code

: Crée un tableau - (PHP 4, PHP 5)
: Calcule la taille d'une chaîne - (PHP 4, PHP 5)
: Expression rationnelle globale - (PHP 4, PHP 5)
: Renvoie une chaîne en majuscules - (PHP 4, PHP 5)
: Indique si une valeur appartient à un tableau - (PHP 4, PHP 5)
: - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: - (PHP 4, PHP 5)
Commentaires
Bonjour,
Fonction très utile ! Merci.
J'ai plusieurs messages d'erreur :
Notice: Uninitialized string offset: 311 in function.php on line 70
Notice: Uninitialized string offset: 311 in function.php on line 71
Notice: Uninitialized string offset: 311 in function.php on line 73
Notice: Uninitialized string offset: 311 in function.php on line 74
Notice: Uninitialized string offset: 311 in function.php on line 75
Notice: Uninitialized string offset: 311 in function.php on line 75
Notice: Uninitialized string offset: 311 in function.php on line 91
Un idée ?
Mick
 
les lignes d'erreurs ne correspondent pas au source, j'ai pas testé avec globals a OFF, fais toi meme les tests sur les valeurs if ( isset($i) == 0)
ou enlève les erreurs du serveurs en haut de ton script: error_reporting(0);
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Fonctions

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
        Publicité