Gestion des Majuscules [script] - PHP / javascript

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Anto1982, 9 Mars 2011.

  1. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 116
    J'aime reçus:
    0
    Bonjour à tous!

    Je suis confronté à un petit problème... Certains de mes utilisateurs, généralement ceux qui proviennent des pays asiatiques comme la Thailande (par exemple) postent leurs annonces en majuscules...

    Quand je dis "Majuscules", je veux dire tout le texte en majuscules...

    Je pense que ce problème est du à:
    - Des utilisateurs peu familiers avec les ordinateurs et les "bonnes pratiques" du web (problème générationnel, métiers/secteurs différents...)
    - La langue (je ne sais pas si il y a une différence entre majuscules et minuscules en Thaïlandais ou en Chinois... (Ils ne réalisent peut être pas qu'ils crient sur mon site)

    Bref... J'ai pensé à utiliser des fonctions PHP pour remettre en forme certains posts au moment de les enregistrer dans la base (première lettre d'une chaîne en majuscule, première lettre de chaque mot en majuscule...)

    Cette solution n'est pas satisfaisante à mon goût car un peu trop "brutale", et cela peut aussi nuire à une certaine mise en forme parfois voulue!

    Le top serait d'afficher un message d'erreur en utilisant PHP et/ou Javascript... en fonction du % de majuscules détectées dans la chaîne de caractères... Mais la, je sais pas par ou commencer... Si une bonne âme passe par la avec un début de solution, je suis preneur! :D

    Anto
     
  2. M&B Multimédia
    M&B Multimédia WRInaute passionné
    Inscrit:
    1 Octobre 2009
    Messages:
    1 117
    J'aime reçus:
    0
    Bonjour Anto1982,


    Code:
    <?php
    
    $var = 'AnTO1982';
    
    $nbcar = strlen($var);
    
    $var = ereg_replace('[^A-Z]','',$var);
    $nbmaj = strlen($var);
    
    $taux = ( $nbmaj / $nbcar ) * 100;
    
    echo 'nbcar : '.$nbcar;
    echo '<br />';
    echo 'nbmaj : '.$nbmaj;
    echo '<br />';
    echo 'taux : '.$taux.'%';
    
    ?>
    
    Codé pour toi à la va-vite... j'espère que tu trouveras ta base de départ la dedans... :wink:
     
  3. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 116
    J'aime reçus:
    0
    Génial!

    Réponse rapide, solution efficace... Reco.
    Moi qui pensait à des solutions compliquées, j'ai même pas pensé à virer les majuscules pour faire le test... :mrgreen:

    Merci!!
     
  4. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Attention, il ne faut plus utiliser les fonctions ereg*. Elles sont obsolètes depuis PHP 5.3.
    Il faut préférer preg_replace.

    De plus, si ton texte contient des lettres accentuées en majuscule, elles ne seront pas comptées. L'astuce consiste à enlever les accents de la chaîne de caractères avant de compter.

    Voici donc une version améliorée :
    Code:
    <?php
    $var = 'AnTO1982É';
    setlocale(LC_CTYPE, 'fr_FR.UTF-8');
    $var = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $var);
    
    $nbcar = strlen($var);
    $var = preg_replace('/[^A-Z]/','',$var);
    $nbmaj = strlen($var);
    
    $taux = ( $nbmaj / $nbcar ) * 100;
    
    echo 'nbcar : '.$nbcar;
    echo '<br />';
    echo 'nbmaj : '.$nbmaj;
    echo '<br />';
    echo 'taux : '.$taux.'%';
    
     
  5. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 116
    J'aime reçus:
    0
    [Résolu] Gestion des Majuscules [script] - PHP / javascript

    C'est de la balle.

    A toutes fins utiles, je rajoute ma brique: un petit script AJAX qui permet d'afficher le message de "warning" sans avoir à soumettre le formulaire, au fur et à mesure que l'utilisateur tape son message!


    Fichier: capital_letters_checker.php
    Code:
    # This file is using AJAX technologies to display an alert message if too much capital letters are typed in a single message
    
    if(isset($_REQUEST['text']) && trim($_REQUEST['text'] != "") && strlen($_REQUEST['text'])>60) {
    	
    	$var = $_REQUEST['text'];
    	setlocale(LC_CTYPE, 'fr_FR.UTF-8');
    	$var = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $var);
    
    	$nbcar = strlen($var);
    	$var = preg_replace('/[^A-Z]/','',$var);
    	$nbmaj = strlen($var);
    
    	$taux = ( $nbmaj / $nbcar ) * 100;
    
    	echo $taux;
    	}
    (ici le script de Blount et M&B, merci a eux!)

    ensuite, le fichier js: capital_letters_checker.js
    Code:
    function capital_checker(text,max,warning) {
    	// alert(text);
    	var xhr_object = null;
    	if(window.XMLHttpRequest) { // Firefox
    		xhr_object = new XMLHttpRequest();
    		}
    	else if(window.ActiveXObject) { // Internet Explorer
    		xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
    		}
    
    	var method = 'GET';
    	var filename = 'setup/capital_letters_checker.php?text='+text;
    
    	xhr_object.open(method, filename, true);
    	xhr_object.onreadystatechange = function() {
    		if(xhr_object.readyState == 4) {
    			var tmp = xhr_object.responseText;
    			if(tmp < max) {
    				document.getElementById('text_capital').innerHTML = '';
    				}
    			else {
    				document.getElementById('text_capital').innerHTML = warning;
    				}
    			
    
    			}
    		}
    	xhr_object.send(null);
    	}
    (mettez à jour le chemin du fichier php au besoin)

    la page qui initie l'appel:
    Code:
    <script type="text/javascript" src="setup/capital_letters_checker.js"></script>
    <?php
    # Ici le début du formulaire
    
    # ici le champs qui va contenir le warning (au dessus du textarea)
    $trade_post_form.='<div id="text_capital" style="width:98%;background-color:red;color:white;padding:2px;font-weight:bold;"></div>';
    
    # mon textarea qui contient le texte que je veux vérifier
    $trade_post_form.='<textarea onKeyUp="capital_checker(this.value,30,\'Warning Message\');" name="message" rows="10" style="width:98%;"></textarea>';
    
    # La fin de mon formulaire
    
    
    Vous noterez que la fonction "capital_checker" contient 3 parametres:
    - this.value (le texte à vérifier)
    - 30 (le % de texte en majuscule toléré... à régler à votre convenance)
    - Warning Message => Le message à afficher (peut etre pas la meilleure solution de le faire passer par la... (peut etre qu'un show/hide div aurait été mieux...)
     
  6. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 415
    J'aime reçus:
    0
    pourquoi ne pas faire aussi cette vérification en js, au lieu de faire un appel ajax ?
    les regex existent aussi en js
     
  7. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 116
    J'aime reçus:
    0
    J'y ai pensé après coup... et en fait, je maîtrise moins bien javascript...
    La c'est vrai que j'arrive quand même avec une solution complexe... mais bon :mrgreen:
     
  8. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    De toute manière, JS ou pas, il faudra le faire aussi en PHP. Bien que JS permet d'ajouter une couche évitant un requête HTTP inutile, il n'est clairement pas "sécurisé" dans le sens où tu peux très bien désactiver JS.
     
  9. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 192
    J'aime reçus:
    1
    Code:
    var filename = 'setup/capital_letters_checker.php?text='+text;
    Suis pas certains que ça fonctionne après le premier espace suivant le premier mot.
     
  10. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 415
    J'aime reçus:
    0
    d'où mon "faire aussi" :wink:
     
  11. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 116
    J'aime reçus:
    0
    Si si ça marche... peut être que le truc serait encore plus propre en passant les variable par POST...
    Dans mon cas, je veux juste afficher un message d'alerte... :mrgreen: rien de bien méchant.
     
Chargement...
Similar Threads - Gestion Majuscules [script] Forum Date
PWA => GTM & gestion cookies ? Développement d'un site Web ou d'une appli mobile 20 Janvier 2020
Outil de gestion des réseaux sociaux Facebook 2 Janvier 2020
Gestion de cookies problème directives CNIL. Administration d'un site Web 15 Novembre 2019
WordPress Gestion des catégories Référencement Google 27 Octobre 2019
Gestion de cookie, mode opt-in ? Droit du web (juridique, fiscalité...) 23 Mai 2019
Prestashop 1.7 Gestion des quantités produits Annuaires et moteurs 26 Septembre 2018
Gestion annonces (contenus éphémères) et 404 Débuter en référencement 24 Septembre 2018
Transfert de gestion d'un nom de domaine Administration d'un site Web 18 Septembre 2018
Gestion SEA, quelles clauses de CGV ajouter ? Droit du web (juridique, fiscalité...) 5 Juin 2018
Gestion globale Cookies compatible CNIL ? Droit du web (juridique, fiscalité...) 30 Octobre 2017
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice