18 Juin 2008
Coupe une chaine en fonction des Majuscules via PHP
Compatibilité : PHP 5, PHP 7
Recompose une chaine de mots en fonction des Majuscules en utilisant la fonction preg_split () pour séparer les mots où se trouve une lettre majuscule.
Cet exemple permet de faire deux contrôles pour éviter d'avoir des textes avec trop de majuscules.
Le premier test permet de contrôler qu'il n'y a pas plus de lettres en majuscule que de lettres en minuscule.
Le deuxième test permet de contrôler que le pourcentage de lettres en majuscule par rapport au nombre de lettres total est inférieur à 50%. ( 50% étant un exemple, à vous de mettre la valeur qui vous convient )
|
|
php.net | Description | Versions PHP | OUTIL |
---|---|---|---|
echo | Affiche une chaîne de caractères | PHP 4, PHP 5, PHP 7, PHP 8 | |
preg_match_all | Expression rationnelle globale | PHP 4, PHP 5, PHP 7, PHP 8 | |
strlen | Calcule la taille d'une chaîne | PHP 4, PHP 5, PHP 7, PHP 8 | |
Recompose une chaine de mots en fonction des Majuscules en utilisant la fonction preg_split () pour séparer les mots où se trouve une lettre majuscule.
Les 4 fonctions clés PHP pour manipuler les majuscules et minuscules dans une chaine de caractères.
Ce page par page est portable car il passe par une fonction. Vous pouvez donc l'afficher en haut de vos résultats et à la fin de vos résultats.
Avoir la capacité de remplacer rapidement une chaine ou un tableau. En toute simplicité avec la fonction str_replace().
Cette fonction vous permet de corriger votre texte si les majuscules ou minuscules se confondent.
KOogar
19 Juin 2008 à 03:47Salut Etienne
Le premier test je vois pas trop a quoi il sert, par contre le second est trés interressant. Changer les majuscules d'un texte est particulièrement délicat comme opération.
En imposant un pourcentage avant une opération de transformation est pour le moins pertinent.
Comme le problème est toujours avec les maj des noms propres et les maj de nom de sociétés, en incluant ton test on arrive à contourner ce problème.
J'ai fait un filtre en incluant ton test et le résultat est positif.
Tous les problemes de Maj ne sont pas résolues pour autant, mais pour cleaner des textes, ce filtre devrait aider.
J'ai mis le pourcentage à 20% Maximum de Majuscule dans un texte, ca doit varier entre 10 et 20%. Jsuis pas prof de francais alors ca reste qu'une estimation ^^
On pourrait compléter avec des messages d'alertes si le texte dépasse les 50% de Majuscules, ya peut-etre du spam dans l'air ou un gros boulet qui connait pas la Netiquette!!
++
KOogar
function filtre_majuscule ($chaine,$pourcentage) {
$nb_min = preg_match_all('/[a-z]/', $chaine, $TRUE);
$nb_maj = preg_match_all('/[A-Z]/', $chaine, $TRUE);
if (($nb_maj / strlen( $chaine ) * 100 ) > $pourcentage) {
$string = strtolower($chaine); // Met tout le texte en minuscule
$capital = true;
for($i = 0; $i < strlen($string); $i++){
$lettre = substr($string, $i, 1);
if($lettre == '.' || $lettre == '!' || $lettre == '?')
{$capital = true;}
elseif(!empty($lettre) && $capital == true){
$lettre = strtoupper($lettre); // Met une majuscule
$capital = false;
}
$new_texte .= $lettre;
}
return $new_texte;
}
else {
return $chaine; }
}
$chaine = "Chaîne à tester POUR LES MAJUSCULES";
echo filtre_majuscule ($chaine,20);
// Chaîne à tester pour les majuscules
$chaine = "Chaîne à tester Mr Dupond pour ouvrir une SARL";
echo filtre_majuscule ($chaine,20);
// Chaîne à tester Mr Dupond pour ouvrir une SARL
?>