Detection de l'ecriture sms

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 552 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
Messages postés
112
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
11 novembre 2007

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 ...
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006

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
Messages postés
48
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
21 avril 2008

Mise à jour effectuée ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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 ++
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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 ++
Afficher les 11 commentaires

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.