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 ;-)
25 sept. 2004 à 14:40
20 sept. 2004 à 07:45
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
15 sept. 2004 à 21:32
15 sept. 2004 à 20:48
if($nb_mots > $min_words && ($nb_mots / $percent) < $compte)
{
return TRUE;
} else {
return FALSE;
}
a ++
15 sept. 2004 à 20:47
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.