We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18219
    • 826 Posts
    Excusez-moi je n’ai pas eu beaucoup de temps pour publier la prochaine série d’exercices.

    J’espère que les deux premiers n’ont pas donné trop de fils à retordre. Si vous avez besoins d’explications n’hésitez pas à poser les questions.

    Bon maintenant nous abordons une série relativement importante notamment dans MODx. Il s’agit du traitement des chaînes de caractères. Voici la série :
    <?php 
    $titre="Mes Premiers Pas : Traitements sur les chaînes"; ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <?php echo "<title>$titre</title>"; ?>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
      <link media="screen" type="text/css" 
      href="template/css/style.css" rel="stylesheet" />
      </head>
      <body>
      <?php echo "<h2 align=\"center\" style=\"color: blue;\">$titre</h2>"; ?>
    <?php
    /*===========================================================
    *  Cours : INITIATION PHP & MySQL
    * 
    * ===========================================================
    * Auteur : Marc VARLET
    * Créé le 23/03/2006
    *
    * Description : Suite d'exercices permettant de faire ses premiers pas en PHP
    *
    */
    $n=1;
    
    /* ========================== LES CHAINES DE CARACTERES =========================================
    Rappels :
    	Fonction				Résultat
    x	addcslashes 			Ajoute des slashes dans une chaîne, à la mode du langage C
    x	addslashes				Ajoute des anti-slashs dans une chaîne
    	bin2hex 				Convertit des données binaires en représentation hexadécimale 
    	chop					Alias de rtrim()
    x	chr					Retourne un caractère spécifique
    x	chunk_split				Scinde une chaîne
    	convert_cyr_string 		Convertit une chaîne d'un jeu de caractères cyrillique à l'autre 
    	count_chars			Retourne des statistiques sur les caractères utilisés dans une chaîne 
    	crc32				Calcule la somme de contrôle CRC32
    x	crypt					Chiffrage indéchiffrable (hashing)
    x	echo					Affiche une chaîne de caractères
    x	explode				Coupe une chaîne en segments
    	fprintf				Ecrit une chaîne formatée dans un flux
    	get_html_translation_table	Retourne la table de traduction des entités utilisée par htmlspecialchars() et htmlentities() 
    	hebrev				Convertit un texte logique hébreux en texte visuel 
    	hebrevc				Convertit un texte logique hébreux en texte visuel, avec retours à la ligne 
    x	html_entity_decode		Convertit toutes les entités HTML en caractères normaux 
    x	htmlentities				Convertit tous les caractères éligibles en entités HTML 
    	htmlspecialchars			Convertit les caractères spéciaux en entités HTML 
    x	implode				Rassemble les éléments d'un tableau en une chaîne
    x	join					Rassemble les éléments d'un tableau en une chaîne
    	levenshtein				Calcule la distance Levenshtein entre deux chaînes 
    	localeconv				Lit la configuration locale
    x	ltrim					Supprime les caractères invisibles de début de chaîne 
    x	md5_file				Calcule le md5 d'un fichier
    x	md5					Calcule le md5 d'une chaîne
    	metaphone				Calcule la clé métaphone
    x	money_format			Met un nombre au format monétaire
    	nl_langinfo				Rassemble des informations sur la langue et la configuration locale. 
    	nl2br					Insère un retour à la ligne HTML à chaque nouvelle ligne 
    	number_format			Formate un nombre pour l'affichage
    	ord					Retourne le code ASCII d'un caractère
    x	parse_str				Analyse une requête HTTP
    x	print					Affiche une chaîne de caractères
    	printf				Affiche une chaîne de caractères formattée
    	quoted_printable_decode	Convertit une chaîne quoted-printable en chaîne 8 bits 
    	quotemeta				Echappe les méta-caractères
    x	rtrim					Supprime les espaces de fin de chaîne 
    	setlocale				Modifie les informations de localisation
    	sha1_file				Calcule le sha1 d'un fichier
    	sha1					Calcule le sha1 d'une chaîne de caractères
    	similar_text			Calcule la similarité de deux chaînes 
    	soundex				Calcule la clé soundex
    	sprintf				Retourne une chaîne formattée
    	sscanf				Analyse une chaîne à l'aide d'un format 
    x	str_ireplace			Version insensible à la casse de str_replace() 
    	str_pad				Complète une chaîne jusqu'à une taille donnée 
    x	str_repeat				Répéte une chaîne
    x	str_replace				Remplace toutes les occurrences dans une chaîne 
    	str_rot13				Effectue une transformation rot13
    	str_shuffle				Mélange les caractères d'une chaîne de caractères
    x	str_split				Convertit une chaîne de caractères en tableau 
    x	str_word_count			Compte le nombre de mots utilisés dans une chaîne
    	strcasecmp				Comparaison de chaînes binaires 
    x	strchr				Trouve la première occurence d'un caractère dans une chaîne 
    	strcmp				Comparaison binaire de chaînes
    	strcoll				Comparaison de chaînes localisée
    	strcspn				Trouve un segment de chaîne ne contenant pas certains caractères 
    x	strip_tags				Supprime les balises HTML et PHP d'une chaîne
    x	stripcslashes			Supprime les anti-slash d'une chaîne C 
    x	stripos				Rercherche la position d'une occurence dans une chaîne, sans tenir compte de la casse 
    x	stripslashes				Supprimer les anti-slash d'une chaîne 
    x	stristr				Trouve la première occurence dans une chaîne (insensible à la casse) 
    x	strlen					Calcule la taille d'une chaîne
    	strnatcasecmp			Comparaison de chaînes avec l'algorithme d'"ordre naturel" (insensible à la casse) 
    	strnatcmp				Comparaison de chaînes avec l'algorithme d'"ordre naturel" 
    	strncasecmp			Compare en binaire des chaînes de caractères 
    	strncmp				Comparaison binaire des n premiers caractères 
    x	strpos				Trouve la position d'un caractère dans une chaîne 
    	strrchr				Retourne la fin de la chaîne 
    x	strrev 				Inverse une chaîne
    	strripos 				Trouve la position de la dernière occurence d'une chaîne dans une autre de façon insensible à la casse. 
    	strrpos 				Trouve la position de la dernière occurence d'un caractère dans une chaîne 
    	strspn 				Trouve le premier segment de chaîne 
    	strstr 				Trouve la première occurence dans une chaîne
    	strtok 				Coupe une chaîne en segments
    x	strtolower 				Renvoie une chaîne en minuscules
    x	strtoupper 				Renvoie une chaîne en majuscules
    x	strtr 					Remplace des chaînes dans une chaîne
    	substr_compare 			Compare 2 chaînes depuis un offset jusqu'à une longueur en caractères 
    	substr_count 			Compte le nombre d'occurrences de segments dans une chaîne
    	substr_replace 			Remplace un segment dans une chaîne
    x	substr 				Retourne un segment de chaîne
    x	trim 					Supprime les espaces en début et fin de chaîne 
    	ucfirst 				Met le premier caractère en majuscule
    	ucwords 				Met en majuscule la première lettre de tous les mots 
    	vprintf 				Affiche une chaîne formatée
    	vsprintf				Retourne une chaîne formatée
    	wordwrap 				Effectue la césure d'une chaîne 
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 1
    echo "<b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    Transformez la chaîne écrite suivante de casses différentes afin que chaque mot ait une initiale en majuscule.
    $ch="TransFOrmeZ unE ChaîNE écRITe dans des cASses diFFéreNTes afiN qUe chAQue MOT ait une inITiale en MAJUSCULE";
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 2
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    En utilisant la fonction strlen() écrivez une boucle qui affiche chaque lettre de la chaîne PHP 5 sur une ligne différente.
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 3
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    Formatez l’affichage d’une suite de chaînes contenant des nom et prénom en respectant les critères suivants : un prénom et un nom
    par ligne affichés sur 20 caractères; toutes les initiales des mots doivent se superposer verticalement.
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 4
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    Utilisez les fonctions adéquates afin que la chaîne <form action="script.php"> soit affichée telle quelle et non comme du code HTML.
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 5
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    À partir de deux chaînes quelconques contenues dans des variables, effectuez une comparaison entre elles pour pouvoir les
    afficher en ordre alphabétique naturel.
    Nous utilisons la fonction strtolower() avant d’opérer la comparaison, sinon tous les caractères de A à Z sont avant les caractères a à z.
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 6
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    Effectuez une censure sur des textes en n’affichant pas ceux qui contiennent le mot zut.
    $ch="Zut je me suis trompé";
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 7
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    Créez une fonction de validation d’une adresse HTTP ou FTP
    */
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // -- Exercice n° 8
    $n++; echo "<br /><b>Exercice n° $n : </b><br />\n";
    /* -- Question :
    Créez une expression régulière pour valider un âge inférieur à 100 ans.
    */
    
    
    // --------------------------------------------------------------------------------------------------------------------------------------
    // --------------------------------------------------------------------------------------------------------------------------------------
    echo "\n";
    ?>
    </body>
    </html>
    

    Pour l’exercice 7, vous aurez besoin d’explications. Je vous donnerai les précisions nécessaires sur votre demande wink
      Marc
      I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
      • 18219
      • 826 Posts
      @ Creasi et Gildas : merci pour ces liens très utiles qui sont de bonnes références pour la connaissance de PHP. Je les utilise fréquemment et j’ai homis de le mentionner dans les références à connaître.

      Excellente idée de créer en commun un snippet ’Made In France’ wink
      Je propose un système de vote d’un article publié : rate : o excellent o bien o moyen o mauvais.
      Exercice relativement simple à comprendre mais qui nécessite de résoudre quelques difficultés.

      Dans un premier temps il s’agit de le faire sans utiliser les variables de session ou les cookies. Donc se contenter d’afficher les choix et de récupérer le vote puis d’afficher les stats.
      Le but est de le rendre le plus modulaire possible. Donc utiliser un fichier language.

      Avant de se lancer dans le code, mettons en place un CDC (cahier des charges). Réflechir avant permet de se donner des objectifs et de tracer un chemin pour ne pas se disperser.
        Marc
        I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
      • As-tu en tête quelque chose comme "CSS Star Rating" (cf. http://modxcms.com/forums/index.php?topic=5489) ?
          Ackwa - Web Design & Development agency | Tours - France | Follow me on Twitter...
          • 18219
          • 826 Posts
          Oupps, pas vu qu’il existait déjà laugh

          Bon faut trouver un autre sujet. Je vais aller faire un tour du coté de la withelist.
          Mais quelqu’un peut avoir un besoin ?
          Nous sommes preneur si le sujet n’est pas complexe. wink
            Marc
            I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
            • 23050
            • 1,842 Posts
            Bonjour Marc,

            Je n’ai pas eu le temps de faire la 2ème série d’exercices. Je manque à tous mes engagements d’écolière sad Je vais essayer de trouver le temps cette semaine mais je ne promets rien !
              • 18219
              • 826 Posts
              Je vois que le temps manques pour tous laugh
                Marc
                I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
                • 5943
                • 37 Posts
                Bon alors pour le 1er exercice je propose le code suivant :

                function transforme($chaine) {	
                	$ch1 = strtolower($chaine);
                	$ch2 = ucwords($ch1);
                	echo '<p>'.$ch2.'</p>';
                }
                
                transforme($ch);


                grin
                  Micka
                  • 5943
                  • 37 Posts
                  Pour le second je propose ça (dans la mesure où il n’a pas été indiqué si l’espace devait être retourné, là il l’est... tongue) :

                  function affiche($chaine) {
                  	$taille = strlen($chaine);
                  	for($i=0; $i<=$taille; $i++) {
                  		echo '<br />'.substr($chaine,$i,1);
                  	}
                  }
                  
                  affiche("PHP 5");


                  grin
                    Micka
                    • 5943
                    • 37 Posts
                    Par contre pour le 3e je demanderai des précisions : les 20 caractères c’est pour chaque prénom et chaque nom ? et l’affichage, on fait en tableau ou en div de préférence ? huh
                      Micka
                      • 5943
                      • 37 Posts
                      Pour l’exercice 4 je propose ça :

                      function change($chaine) {
                      	$val = htmlentities($chaine);
                      	echo '<p>'.$val.'</p>';
                      }
                      
                      change('<form action="script.php">');
                        Micka