Detection de l'ecriture sms

4/5 (11 avis)

Snippet vu 6 660 fois - Téléchargée 37 fois

Contenu du snippet

Cette petite fonction permet de verifier si un texte n'est pas écrits en écriture SMS. Pour cela, il verifie qu'il n'y ai pas dans le texte une trop grande proportion de mots trops courts.

Source / Exemple :


function sms_write($text, $min_letter=3, $min_words=5, $percent=2) 
{ 

   //preparation des variables 
   $table_text = explode(" ", $text); 
   $compte = 0; 
   $nb_mots = count($table_text);

   //verification de chaque mot 
   for($t = 0; $t < $nb_mots; $t++) 
   { 
      if(strlen($table_text[$t]) <= $min_letter) 
         $compte++; 
   } 

   //test final 
   if($nb_mots > $min_words && ($nb_mots / $percent) < $compte) 
   { 
      return true; 
   } else { 
      return false; 
   } 
} 

/*
Cette fonction attends comme parametres: 

$text: le texte à analyser 
$min_letter (optionnel): le nombre minimum de lettre d'un mot pour qu'il ne soit pas considéré comme une abréviation 
$min_words (optionnel): le nombre minimum de mots qui doivent être présent dans le texte pour que la fonction lance l'analyse 
$percent (optionnel): le rapport abreviation / mots longs minimum pour que le message soit écrit en écriture sms 

La fonction renvoi true si le message est en sms, et false sinon. 

  • /

Conclusion :


bugs connus: Essayez donc de passez un texte style ca:

"je suis sur que ca marche"

par la fonction ;-)

Donc ne lui accordez pas une confiance absolue ;-)

A voir également

Ajouter un commentaire Commentaires
cs_cbibi Messages postés 112 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 11 novembre 2007
25 sept. 2004 à 14:40
Hum source intéressante , mais c'est difficile de dire si un mot est ou n'est pas du sms : la phrase : "je m'apelle waz" vas devenir : " m'apelle waz " , si je defini $min_letter=3 , etant donné que l'ecriture sms , reste sur quelques mots , il aurait été préferable de définir des str_replace ...
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
20 sept. 2004 à 07:45
pour rendre plus fiable, il faudrait répertorier quelques mots courts français souvent utilisés dans les messages (je, tu, il, ils, sur, sûr, que, qui, ça, a, à, et, du, un, une, des, de, les, le, la, ma, mes, mon...).
Tu met dans un array, et pour considérer tes mots comme sms ou non, tu testes :
si ton mot < nbminimum de lettres ET !in_array(letableau, ton mot)
alors c'est un mot sms
Aramiil Messages postés 48 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 21 avril 2008
15 sept. 2004 à 21:32
Mise à jour effectuée ;-)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
15 sept. 2004 à 20:48
Heu désolé, remplaces la fin par ça (un petit oubli) :

if($nb_mots > $min_words && ($nb_mots / $percent) < $compte)
{
return TRUE;
} else {
return FALSE;
}

a ++
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
15 sept. 2004 à 20:47
Salut ;-)

Comme amélioration : (optimisation). Tu remplaces ça :

for($t = 0; $t < count($table_text); $t++)
{
if(strlen($table_text[$t]) <= $min_letter)
$compte++;
}

//test final
if(count($table_text) > $min_words && (count($table_text) / $percent) < $compte)
{
return TRUE;
} else {
return FALSE;
}
par ça :
$nb_mots=count($table_text);

for($t = 0; $t < $nb_mots; $t++)
{
if(strlen($table_text[$t]) <= $min_letter)
$compte++;
}

//test final
if($nb_mots > $min_words && (count($table_text) / $percent) < $compte)
{
return TRUE;
} else {
return FALSE;
}

a ++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.