Controle le pourcentage de majuscules dans 1 chaine

  Information

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 )

  code source classé dans  SEO - Référencement

 
 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    
                               
/*---------------------------------------------------------------*/
/*
Titre : Controle le pourcentage de majuscules dans 1 chaine

URL : https://phpsources.net/code_s.php?id=417
Auteur : forty
Website auteur : http://www.toplien.fr/
Date édition : 18 Juin 2008
Date mise a jour : 23 Aout 2019

Rapport de la maj:
- fonctionnement du code vérifié
*/
/*---------------------------------------------------------------*/

$chaine = "Chaà®ne à  tester POUR LES MAJUSCULES";

$nb_min = preg_match_all('/[a-z]/', $chaine, $res);
$nb_maj = preg_match_all('/[A-Z]/', $chaine, $res);
if ($nb_maj >= $nb_min) {
echo 'La chaine contient plus de majuscules que de minuscules <br />';
}
if (($nb_maj / strlen( $chaine ) * 100 ) > 50) {
echo 'La chaine contient plus de 50% de majuscules <br />';
}
?>

Exemple :

 
 01    
 02    
 03    
                                
La chaine contient plus de majuscules que de minuscules
La chaine contient plus de 50% de majuscules

      Fonctions du code - Doc officielle PHP

Détail    php.net  
Description
Versions PHP
   echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
   preg_match_all
Expression rationnelle globale
PHP 4, 5, 7 et 8
   strlen
Calcule la taille d'une chaîne
PHP 4, 5, 7 et 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[1]

  • avatar

    KOogar

    19 Juin 2008 à 03:47

    Salut 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

    Code:

    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

    ?>


 Autres snippets qui pourraient vous intéressez

Coupe une chaine en fonction des Majuscules via PHP

Compatibilité : 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.

Conversion d'une chaine en minuscules/majuscules

Compatibilité : PHP 5, PHP 7, PHP 8

Les 4 fonctions clés PHP pour manipuler les majuscules et minuscules dans une chaine de caractères.

Pagination avec controle des résultats

Compatibilité : PHP 5, PHP 7, PHP 8

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.

Remplace 1 chaine ou 1 tableau dans 1 chaine

Compatibilité : PHP 5, PHP 7, PHP 8

Avoir la capacité de remplacer rapidement une chaine ou un tableau. En toute simplicité avec la fonction str_replace().

Corrige les Majuscules d'un texte avec PHP

Compatibilité : PHP 5, PHP 7, PHP 8

Cette fonction vous permet de corriger votre texte si les majuscules ou minuscules se confondent.

* Requêtes exécutées avec Recherche Contextuelle
avatar

Forty

  18 Juin 2008

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    23 Aout 2019
    fonctionnement du code vérifié

8 502 Vues
Compatibilité du code
PHP 5, 7 et 8+
avatar