Créée le, 19/06/2015

 Mise à jour le, 12/05/2019

Visiteurs N°  




Accueil
Nouveau Blog Nouveautés Moteur de Recherche Votre Caddie Pour Vos Achats Votre Espace Membre Vos Signets et Vos Jeux Préférés Page de Bienvenue Statique Site en Français Site en Anglais
Sommaires
Électronique Fondamentale Technologie Fondamentale Testez vos Connaissances Électronique Théorique Digitale Électronique Pratique Digitale Lexique Électronique Numérique Data book TTL Data book CMOS Dépannage TVC Mathématique
Micro-ordinateurs
Théorique des Micro-ordinateurs Testez vos Connaissances Pratique des Micro-ordinateurs Glossaires sur les Ordinateurs
Physique
La lumière Champ d'action Rayonnement Électromagnétique
Technologies
Classification des Résistances Identification des Résistances Classification des Condensateurs Identification des Condensateurs
Formulaires Mathématiques
Géométrie Physique 1. - Électronique 1. 2. - Électronique 1. 3. - Électrotechnique 1. 4. - Électromagnétisme
Accès à tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages N. B. M. - Tome I - 201 Pages E. T. M. - Tome I - 554 Pages Business à Domicile Ouvrages 34 pages gratuits Nos E-books Logiciel Géométrie Logiciel Composants Électroniques
Aperçu de tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages E. T. M. - Tome I - 554 Pages Logiciel Géométrie Logiciel Composants Électroniques
Nos Leçons aux Formats PDF
Électronique Fondamentale Technologie Fondamentale Électronique Théorique Digitale Électronique Pratique Digitale Théorique des Micro-ordinateurs Mathématiques
Informatique
Dépannage Win98 et WinXP et autres Dépannage PC Glossaire HTML et Programmes PHP et Programmes JavaScript (en cours de travaux) Création de plusieurs Sites
Forums
Forum Électronique et Infos Forum Électronique et Poésie
Divers et autres
Formulaire des pages perso News XML Statistiques CountUs Éditeur JavaScript Nos Partenaires et nos Liens Utiles Gestionnaire de Partenariat Nos Partenaires MyCircle Sondages 1er Livre d'Or 2ème livre d'Or

Signets :
  Leçons suivantes        Leçons précédentes     Bas de page
  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet


Formulaire Intelligent de Saisie d'un Message (Smart Form Mail), Mise en Forme de Chaînes, Utilisation des Fonctions strtok(), substr(), Mise en Ordre des Chaînes, strcmp(), strcasecmp() et strnatcmp() (1ère partie) :



Dans cette leçon, vous verrez comment utiliser les fonctions PHP de traitement de chaînes pour mettre en forme et manipuler du texte. Nous examinerons également comment mettre en oeuvre les fonctions de traitement de chaînes et d'expressions régulières pour rechercher des mots, des phrases, ou tout autre motif au sein d'une chaîne.

Les fonctions décrites dans cette leçon, sont utiles dans divers contextes. Par exemple, vous vous trouverez sans aucun doute, souvent en situation de devoir nettoyer ou mettre en forme les données saisies par les utilisateurs, avant de les stocker dans une base de données. Les fonctions de recherche sont précieuses lors de l'élaboration d'applications de type moteur de recherche (entre autres).

Application modèle ; formulaire intelligent de saisie d'un message (Smart Form Mail) :

Nous illustrerons notre étude des fonctions de manipulation de chaînes et d'expressions régulières par le développement d'un formulaire intelligent de saisie d'un message. Nous utiliserons les scripts écrits au cours de cette leçon, pour compléter l'application du site de chez Jean-Pierre des Composants électroniques élaborée précédemment dans les leçons précédentes.

Notre objectif est ici de développer un formulaire simple, que les clients de chez Jean-Pierre pourront utiliser pour faire part de leurs réclamations et de leurs encouragements. Ce formulaire (voir figure 1) est plus élaboré que la plupart des formulaires de ce type publiés sur le Net. En effet, au lieu de transmettre le formulaire vers une adresse de courrier électronique générique, telle que feedback@domain.com, nous implémenterons un processus plus intelligent, en recherchant des mots et des phrases clés dans les données saisies par les clients, puis en transmettant le message du client à l'employé approprié de l'entreprise de chez Jean-Pierre. Par exemple, si le message transmis par le client contient le mot "publicité", il sera dirigé vers la boîte aux lettres du département de marketing. Si le message émane d'un client important, il pourra être directement transmis chez Jean-Pierre.

Formulaire_de_Saisie_E_Mail.png

Nous commencerons ce projet par le script simple du Listing ci-dessous. Nous compléterons ensuite ce script au fur et à mesure de notre avancée dans cette leçon.

<HTML>

     <HEAD>

                    <TITLE> La transmission du contenu d'un formulaire </TITLE>

     </HEAD>

              <BODY BGCOLOR="#CCCCCC">

                  <BR> <BR>

                  <H2> <CENTER> La transmission du contenu d'un formulaire et les commentaires des clients. </CENTER> </H2>

                  <H1> <CENTER> S'il vous pla&icirc;t, dites-nous ce que vous pensez ? </CENTER> </H1>

                  <CENTER> <FORM ACTION = "" METHOD = "POST">

                  <TABLE BORDER="0"> <BR> <BR>

                  <tr>

                  <TH> <font face="Arial" size="3" color="#000000"> <B> Votre Nom : </B> </font> </TD> <BR/>

                  <input type="text" name="Votre_Nom" size="30" maxlength="50">

                  </tr>

                  <tr>

                  <TH> <font face="Arial" size="3" color="#000000"> <B> <BR> <BR> Votre Adresse E-Mail : </B> </font> </TD> <BR>

                  <input type="text" name="Votre_E_Mail" size="30" maxlength="50"> </TD>

                  </tr>

                  <tr>

                  <TH> <font face="Arial" size="3" color="#000000"> <B> <BR> <BR> Vos r&eacute;actions ou vos commentaires : </B> </font> </TD> <BR>

                  <textarea rows="7" cols="50" name="Commentaire_du_Client" maxlength="600"> </textarea> </tr>

                  <tr>

                  <TD colspan="2" align="center"> <BR> <BR> <BR> <input type="submit" value="Envoyer vos commentaires"> </TD>

                  </tr>

                  </TABLE> </FORM> </CENTER>

                  <?php

                  $Votre_Adresse_Mail = "WebServeur-daniel.robert92@orange.fr" ;

                  $Votre_Sujet = "Commentaires sur le site Web" ;

                  $Votre_Contenu_Mail = "Le nom du client : " . $Votre_Nom . "\n"

                  . "E-Mail du client : " . $Votre_E_Mail . "\n"

                  . "Commentaire du client : \n " . $Commentaire_du_Client . "\n" ;

                  $From_Adresse = "De la part de WebServeur-Jean-P-92@domain.fr :" ;

                  mail ($Votre_Adresse_Mail, $Votre_Sujet, $Votre_Contenu_Mail, $From_Adresse) ;

                  ?>

              </BODY>

</HTML>

Notez que, en situation réelle, si l'utilisateur a bien rempli tous les champs obligatoires, par exemple, en utilisant la fonction isEmpty(). Ce test n'est pas implémenté dans le Listing ci-dessus, ni dans les autres applications modèles de nos leçons, par souci de simplification.

Le Listing ci-dessus, conduit à la concaténation des champs du formulaire, et à la transmission par courrier électronique de la chaîne résultante, à l'adresse WebServeur-daniel.robert92@orange.fr. Pour cela, la fonction mail(), que nous n'avons pas utilisée jusqu'ici, est mise en oeuvre.

Pour visualiser l'aperçu, en cliquant ici. [Exemple 1]. Ce formulaire n'étant pas terminé, il le sera dans la prochaine leçon ...

Comme son nom le suggère, la fonction mail() transmet des courriers électroniques (des mails). Elle s'emploie avec le prototype suivant :

    bool mail (string A, string Objet, string Message, string [entêtes_additionnels]) ;

Les trois premiers arguments de la fonction mail() sont obligatoires, et spécifient respectivement l'adresse à laquelle doivent être envoyés le message, l'objet du message, et le contenu du message. Le quatrième argument permet d'envoyer tout en-tête supplémentaire valide de courrier électronique. Vous trouverez une description des en-têtes E-Mails valides dans le document RFC822, qui peut être en ligne (nombre de normes Internet sont définies dans des RFC, que nous aborderons dans les prochaines leçons. Au Listing ci-dessus, le quatrième argument de la fonction mail() est utilisé pour ajouter une adresse "From:" dans le courrier. Nous aurions également pu l'employer pour insérer des champs "Reply-To" et "Cc:", entre autres. Pour ajouter plusieurs en-têtes additionnels, il suffit de les spécifier à la suite sous forme d'une chaîne, en les séparant par des caractères de nouvelle ligne (\n), comme suit :

    $entetes_supplementaires ="From: WebServeur-daniel.robert92@orange.fr\n" . "Reply-To: De la part de WebServeur-Jean-P-92@domain.fr" ;

Pour pouvoir mettre en oeuvre la fonction mail(), vous devez configurer votre installation PHP de sorte à lui notifier l'existence de votre application de messagerie électronique. Si l'exécution de votre script pose problème, relisez attentivement vos documentations ou encore allez sur leur site et vérifiez votre installation PHP.

Tout au long de cette leçon, nous améliorerons le script de base donné dans le Listing ci-dessus, en nous servant de fonctions PHP de manipulation de chaînes et d'expressions régulières.

Mise en forme de chaînes :

Les chaînes saisies par les visiteurs des sites Web (typiquement à partir d'un formulaire HTML) requièrent souvent un nettoyage pour être exploitables.

Elagage ou nettoyage des chaînes ; chop(), ltrim() et trim() :

La première étape dans le nettoyage d'une chaîne consiste souvent à en éliminer l'espace blanc superflu. Cet élégage n'est pas indispensable, mais se révèle souvent très utile lorsque les chaînes doivent être stockées dans un fichier ou dans une base de données, ou lorsqu'elles doivent être comparéees avec d'autres chaînes.

Le langage PHP offre trois fonctions permettant d'effectuer ce type de nettoyage. Dans le cadre de notre application modèle, nous utiliserons la fonction trim() pour élaguer les données entrantes, de la manière suivante : (Les modifications apportées sont en couleur verte foncée).

                  $Votre_Nom = trim($Votre_Nom) ;

                  $Votre_E_Mail = trim($Votre_E_Mail) ;

                  $Commentaire_du_Client = trim($Commentaire_du_Client) ;

La fonction trim() élimine l'espace blanc existant, en début et à la fin de la chaîne qui lui est fournie comme argument, et renvoie la chaîne ainsi élaguée. Les caractères d'espace blanc supprimés par la fonction trim() sont les nouvelles lignes et les retours chariot (\n et \r), les tabulations horizontales et verticales (\t et \v), les caractères de fin de chaîne (\0), ainsi que les espaces.

Selon le but recherché, les fonctions ltrim() ou chop() peuvent se révéler plus appropriées que la fonction trim(). ltrim() et chop() sont toutes deux semblables à la fonction trim(), en ce qu'elles prennent comme argument la chaîne à traiter, renvoient la chaîne mise en forme. Par contre, alors que la fonction trim() supprime l'espace blanc encadrant la chaîne, la fonction ltrim() élimine l'espace blanc uniquement au début de la chaîne (c'est-à-dire à la gauche de la chaîne), et la fonction chop() supprime l'espace blanc uniquement à la fin de la chaîne (ou à droite).

Mise en forme des chaînes en vue de leur présentation :

PHP offre tout un jeu de fonctions dédiées à la mise en forme des chaînes.

Mise en forme HTML ; la fonction nl2br()

La fonction nl2br() remplace chaque caractère de nouvelle ligne de la chaîne, qui lui est passé comme paramètre, par la balise HTML <BR>. Cette fonction est précieuse lorsque de longues chaînes doivent être imprimées dans la fenêtre du navigateur. Par exemple, nous utiliserons la fonction nl2br() pour présenter en retour au client le message transmis par ce dernier, avec une mise en forme acceptable :

    <p> Vos commentaires (ci-dessous) a été envoyé. </p>

    <p> <?PHP echo nl2br ($Votre_Contenu_Mail) ; ?> </p>

Souvenez-vous que, dans le contexte d'un codage HTML, l'espace blanc est ignoré. Par conséquent, en l'absence d'un traitement au moyen de la fonction nl2br(), le message du client sera imprimé sous la forme d'une seule ligne (à l'exception des caractères de nouvelles lignes imposés par le navigateur lui-même). La figure 2 illustre ces deux modes d'affichage, avec et sans traitement par la fonction nl2br().

Fonction_NL2BR.png

Mise en forme d'une chaîne en vue de son impression :

Jusqu'ici nous avons utilisé la construction du langage PHP echo pour imprimer des chaînes dans la fenêtre du navigateur Web.

PHP offre également la fonction print(), qui est analogue à la construction echo. Toutefois, parce que print() est une fonction, elle renvoie une valeur (respectivement 0 ou 1, selon la réussite ou l'échec de l'impression).

echo, tout comme print(), conduit à l'impression de la chaîne "telle quelle". Vous pouvez toutefois appliquer une mise en forme plus sophistiquée au moyen des fonctions printf() et sprintf(). Ces deux fonctions sont essentiellement comparables à print(), excepté que la fonction printf imprime la chaîne mise en forme dans le navigateur, tandis que sprintf() renvoie la chaîne mise en forme.

Ces fonctions existent également dans le langage C. Si vous n'avez jamais programmé en C, il vous faudra peut être un peu de temps pour vous familiariser avec ces fonctions. Le jeu en vaut toutefois la chandelle, compte tenu de la puissance et de l'utilité de ces fonctions d'impression.

Les prototypes de ces fonctions sont les suivantes :

    string sprinf (string format [, divers arguments ...])

    int prinf (string format [, divers arguments ...])

Le premier argument requis par ces fonctions est une chaîne décrivant la forme de base de la sortie, avec des codes de mise en forme au lieu de variables. Les autres arguments sont des variables que l'interpréteur PHP viendra insérer dans la chaîne, en lieu et place des codes de mise en forme.

Par exemple, avec la fonction echo, nous pouvons imprimer une chaîne en y insérant une variable, comme suit :

    $total = 180 . "&nbsp; euros" ;

    echo "Montant total de la commande est : $total." ;

Le même résultat peut être obtenu au moyen de la fonction printf(), de la manière suivante :

    $total = 180 . "&nbsp; euros" ;

    printf ("Montant total de la commande est : %s.", $total) ;

Le code %s spécifié dans la chaîne à mettre en forme constitue une "spécification de conversion". Il indique à l'interpréteur PHP qu'il doit être remplacé par une chaîne. Dans le cas présent, il doit être remplacé par $total, interprétée comme étant une chaîne.

Si la valeur stockée dans $total était 180, ces deux approches conduiraient à l'impression de $total sous la forme de 180.

La fonction printf présente l'avantage qu'elle nous permet d'utiliser une spécification de conversion plus utile. En effet, nous pouvons utiliser printf, en spécifiant que la variable $total est en réalité un nombre à virgule flottante, et qu'elle doit être imprimée avec deux décimales, par l'instruction suivante :

    $total = 180 ;

    printf ("Montant total de la commande est : %.2f", $total) ;

Le résultat est de : 180,00

Plusieurs spécifications de conversion peuvent être insérées dans une même chaîne à mettre en forme. Si la chaîne à mettre en forme contient n spécifications, alors n arguments doivent être spécifiés à la suite de la chaîne. Chaque spécification de conversion est alors remplacée par l'argument correspondant, l'interpréteur PHP utilisant les arguments dans l'ordre où ils sont spécifiés. Par exemple :

    $total = 180 ;

    $total_expedition = 15 ;

    printf ("Montant total de la commande est : %.2f (avec l'exp&eacute;dition en surplus %.2f)", $total, $total_expedition) ;

Lorsqu'il traitera cette ligne de code, l'interpréteur PHP remplacera la première spécification de conversion par la valeur $total, et la seconde spécification par la valeur de $total_expedition.

Chaque spécification de conversion doit avoir le format suivant :

    %[caractère_remplissage][-][largeur][.précision]type

Toute spécification de conversion doit commencer par le symbole %. Pour imprimer en symbole %, vous devez par conséquent utiliser % %.

Le spécificateur caractère_remplissage est optionnel. S'il est spécifié, il est employé pour compléter la variable jusqu'à la largeur spécifiée. Par exemple, un caractère de remplissage s'utilise pour ajouter des zéros à des nombres tels que les compteurs.

Le symbole - est optionnel. Il spécifie que les données doivent être alignées à gauche dans le champ, au lieu d'être alignées à droite, comme c'est le cas par défaut.

Le spécificateur largeur indique à la fonction printf() la place (en caractères) qui doit être réservée à la variable.

Le spécificateur précision devrait commencer par un point décimal. Il indique le nombre de décimales à imprimer.

Le type constitue la dernière partie d'une spécification de conversion, et indique le type des données passées en argument. Les valeurs autorisées pour ce spécificateur sont décrites et extraites de nos catalogues de la figure 3 du Tableau ci-après :

Fig. 3. - Valeurs possibles pour le "type" d'une spécification de conversion :
b L'argument est traité comme un entier, et représenté comme un nombre binaire
c L'argument est traité comme un entier, et représenté comme un caractère
d L'argument est traité comme un entier, et représenté comme un nombre décimal
f L'argument est traité comme un double, et représenté comme un nombre à virgule flottante
o L'argument est traité comme un entier, et représenté comme un nombre octal
s L'argument est traité comme une chaîne, et représenté comme une chaîne
x L'argument est traité comme un entier, et représenté comme un nombre hexadécimal (en minuscule)
X L'argument est traité comme un entier, et représenté comme un nombre hexadécimal (en majuscule)

Vous avez probablement noté que des séquences telles que \n sont utilisées lors de l'impression de chaînes dans la fenêtre du navigateur. Ces séquences constituent un moyen d'imprimer, en sortie des caractères spéciaux. La séquence \n représente par exemple le caractère de nouvelle ligne. Les deux autres séquences fréquemment utilisées sont \t et \s, qui représentent respectivement le caractère de tabulation et le caractère espace.

Modification de la casse d'une chaîne :

PHP offre la possibilité de modifier la casse d'une chaîne. Dans le cas de l'application de notre modèle étudié dans cette leçon, cette possibilité n'est guère utile. Nous examinerons néanmoins quelques exemples simples où elle est très appréciable.

Considérons pour commencer la chaîne $sujet, qui contient l'objet du message, et qui est utilisée dans le courrier électronique transmis à partir du site de chez Jean-Pierre. Diverses fonctions sont à notre disposition pour en changer la casse. Les effets de ces différentes fonctions sont résumés dans le tableau de la figure 4.

Dans le tableau de la figure 4, la première colonne indique le nom de la fonction, la deuxième colonne décrit l'effet de la fonction considérée, la troisième colonne montre comment la fonction serait appliquée à la chaîne $sujet, tandis que la dernière colonne donne la valeur qui serait renvoyée par la fonction.

Fig. 4. - Fonctions de modification de la casse d'une chaîne, avec leurs effets :
Fonction Description Usage Valeur renvoyée
$sujet Commentaires sur le site
strtoupper() Convertit la chaîne en majuscule strtoupper ($sujet) COMMENTAIRES SUR LE SITE
strtolower() Convertit la chaîne en minuscule strtolower ($sujet) commentaires sur le site
ucfirst() Met en majuscule la première lettre de la chaîne, si ce caractère est alphabétique ucfirst ($sujet) Commentaires sur le site
ucwords() Met en majuscule la première lettre de chaque mot de la chaîne qui commence par un caractère alphabétique ucwords ($sujet) Commentaires Sur Le Site

Par Exemple :

    $sujet = "commentaires sur le site !" ;

    $sujet = strtoupper ($sujet) ;

    echo "$sujet" ;

    Résultat attendu : COMMENTAIRES SUR LE SITE !

Mise en forme de chaînes en vue de leur stockage ; AddSlaches() et StripSlashes() :

Si les fonctions de traitement de chaîne permettent de modifier la présentation visuelle des chaînes, certaines d'entre elles peuvent également être employées pour mettre les chaînes en forme, en préparation d'un stockage dans une base de données. Bien que l'écriture dans une base de données ne soit pas abordée dans cette leçon avant les prochaines, nous traiterons dès maintenant la mise en forme des chaînes, en vue de leur stockage dans une base de données que l'on verra plus tard.

Certains caractères dont la présence est autorisée au sein d'une chaîne peuvent se révéler une source de problème, particulièrement lors de l'insertion des données dans une base de données. Une base de données interprète, en effet certains caractères comme des caractères de contrôle. Les caractères les plus problématiques sont les guillemets (simples et doubles), les barres obliques inversées (\), et le caractère NUL.

Il est par conséquent nécessaire de marquer, ou d'échapper, ces caractères, de telle sorte qu'une base de données telle que MySQL les traite en tant que caractères littéraux, et non pas comme des séquences de contrôle. Pour échapper ces caractères, il suffit de les faire précéder d'une barre oblique inversée. Par exemple, le caractère " (guillemet double) doit être noté sous forme \" (barre oblique inversée guillemet double), et le caractère \ (barre oblique inversée) doit être représenté par la séquence d'échappement \\ (deux barres obliques inversées successives).

Notez que ce mode de représentation est universel pour tous les caractères spéciaux. Par conséquent, pour échapper la séquence \\ dans une chaîne, vous devez utiliser la séquence d'échappement \\\\.

PHP offre deux fonctions spécialement dédiées à l'échappement des caractères. Avant d'écrire une chaîne dans une base de données, vous devez la traiter au moyen de la fonction AddSlashes(), comme dans l'exemple suivant :

    $retour_information = AddSlashes ($retour_information) ;

Comme nombre d'autres fonctions de traitement de chaînes, la fonction AddSlashes() renvoie la chaîne qui lui a été passée comme argument, mise en forme.

Après avoir été traitée au moyen de la fonction AddSlashes(), une chaîne peut être stockée dans la base de données, avec les barres obliques inversées qui y ont été introduites. Lors de la récupération de la chaîne, vous devez alors prendre soin de supprimer ces barres obliques d'échappement. Pour cela, vous pouvez mettre en oeuvre la fonction StripSlashes(), comme suit :

    $retour_information = StripSlashes ($retour_information) ;

La figure 5 illustre l'effet produit par ces fonctions lorsqu'elles sont appliquées à des chaînes.

Fonction_AddSlashes.png

PHP peut être configuré de sorte à ajouter et à éliminer automatiquement des barres obliques d'échappement. On parle alors d'utilisation de guillemets magiques. Cette possibilité sera décrite dans les prochaines leçons.

Fusion et scission de chaînes au moyen de fonctions de traitement de chaîne :

Il apparaît souvent nécessaire d'examiner et de traiter certaines parties d'une chaîne séparément du reste de la chaîne. Par exemple, nous pourrions vouloir examiner les mots composant une phrase pour vérifier l'orthographe de cette dernière, ou scinder un nom de domaine ou une adresse de courrier électronique, en ses différentes composantes. PHP met à votre disposition plusieurs fonctions de traitement de chaîne et une fonction de traitement d'expression régulière permettant d'opérer ce type de manipulation.

Dans le cadre de notre application modèle, supposez que Jean-Pierre veuille recevoir personnellement tous les messages client provenant de grosclient.com Nous pouvons satisfaire son souhait en décomposant l'adresse de courrier électronique fournie par le clients, et en examinant si elle contient la sous-chaîne grosclient.com.

Utilisation des fonctions explode(), implode() et join()

explode() est la première fonction que nous pouvons mettre en oeuvre pour atteindre notre objectif. Son prototype est le suivant :

    array explode (string séparateur, string entrée) ;

Cette fonction prend une chaîne comme deuxième argument (entrée) et la scinde au niveau de chaque occurrence du séparateur spécifié comme premier argument. Les différentes sous-chaînes ainsi obtenues sont renvoyées sous forme d'un tableau.

Dans le cadre de notre application modèle, nous pouvons extraire le nom de domaine de l'adresse de courrier électronique du client par le biais du code suivant :

    $Votre_E_Mail_array = explode ("@", $Votre_E_Mail) ;

L'exécution de cette ligne de code conduit à la scission de l'adresse de courrier électronique du client en deux parties : le nom d'utilisateur, qui est stocké dans $Votre_E_Mail_array[0], et le nom de domaine, qui est stocké dans $Votre_E_Mail_array[1].

Nous pouvons alors identifier l'origine du client, en testant le nom de domaine. Ne reste plus ensuite qu'à transmettre le message saisi par le client à la personne appropriée :

    if ($Votre_E_Mail_array[1] == "grosclient.fr")

    $Votre_Adresse_Mail = "WebServeur-daniel.robert92@orange.fr" ;

    else

    $Votre_Adresse_Mail = "Jean-p9.old@orange.fr" ;

Notez que si le nom de domaine est défini en lettres majuscules, le code précédent ne conduira pas au résultat recherché. Pour éviter ce problème, nous pouvons convertir l'ensemble des caractères du nom de domaine en majuscules, ou bien en minuscules, avant d'effectuer notre test :

    $Votre_E_Mail_array[1] = strtoupper ($Votre_E_Mail_array[1]) ;

L'effet produit par la fonction explode() peut être annulé, en mettant en oeuvre la fonction implode(), ou la fonction join(). Ces deux fonctions sont identiques. Par exemple, la ligne de code qui suit :

    $Votre_E_Mail_array = array ("Votre_Nom", "Votre_E_Mail", "Votre_Contenu_Mail") ;

    $Comme_Separateur = implode("&nbsp;&nbsp;@&nbsp;&nbsp;", $Votre_E_Mail_array);

Opère la recombinaison de tous les éléments du tableau $Votre_E_Mail_array, en les joignant au moyen de la chaîne passée comme premier argument. Cet appel de fonction est très semblable à celui de la fonction explode(), mais produit le résultat opposé.

Utilisation de la fonction strtok() :

Contrairement à la fonction explode(), qui décompose en une seule fois une chaîne en différentes parties, la fonction strtok() extrait une à une les différentes parties d'une chaîne (token, qui peut être traduit par "maillon"). La fonction strtok() se révèle une solution très utile pour remplacer la fonction explode(), afin de traiter un à un des mots formant une chaîne de caractères.

Le prototype de la fonction strtok() est le suivant :

    string strtok (string entrée, string séparateur) ;

L'argument séparateur peut contenir soit un caractère individuel, soit une chaîne de caractères. Notez toutefois que la chaîne spécifiée dans l'argument entrée sera scindée au niveau de chacun des caractères spécifiés dans le séparateur, et non pas au niveau des occurrences de la chaîne séparateur complète (ce qui est le cas avec la fonction explode().

Le prototype donné précédemment ne fait pas apparaître toute la subtilité de la mise en oeuvre de la fonction strtok().

Pour obtenir le premier "maillon" d'une chaîne, invoquez la fonction strtok(), en lui passant la chaîne à décomposer, ainsi que le séparateur à utiliser. Pour obtenir les maillons suivants, il suffit de passer un seul paramètre : le séparateur, la fonction strtok() conserve, en effet un pointeur interne sur la chaîne qui lui a été passé comme argument. Pour réinitialiser le pointeur de strtok(), invoquez strtok() en spécifiant à nouveau l'argument entrée.

Voici un exemple typique d'utilisation de la fonction strtok() :

    $Retour_Information = "Les commentaires de notre client" ;

    $Maillon = strtok ($Retour_Information, " ") ;

    echo $Maillon . "<BR>" ;

    while($Maillon !== false)

    {

    $Maillon = strtok(" ") ;

    echo $Maillon . "<BR>" ;

    } ;

Le résultat est le suivant :

    Les

    commentaires

    de

    notre

    client

Comme nous l'avons déjà mentionné, il serait fortement indiqué dans l'exemple considéré ici de vérifier que le client a bien rempli les champs du formulaire de message, par exemple, au moyen de la fonction empty(). Ce test n'est pas implémenté dans les exemples de code donnés dans cette leçon, par souci de brièveté.

Le code précédent imprime sur une ligne séparée chaque maillon du message saisi par le client. Ce traitement de scission se poursuit jusqu'à la fin du message. Notez que le fonctionnement de la fonction strtok() est légèrement différent en programmation PHP et en programmation C. Lorsque la chaîne à décomposer contient plusieurs instances successives d'un séparateur (deux espaces dans notre exemple), la fonction strtok() renvoie une chaîne vide. Etant donné qu'une chaîne vide est également renvoyée lorsque la fin de la chaîne est atteinte, il y a risque de confusion. De plus, si un des maillons est de valeur 0, la fonction strtok() renvoie également une chaîne vide. Cette limitation rend la fonction PHP strtok() un peu moins utile que la fonction strtok() du langage C. De ce fait, l'utilisation de la fonction explode() est souvent préférable.

Utilisation de la fonction substr() :

La fonction substr() permet d'accéder à une sous-chaîne d'une chaîne, en spécifiant les points de début et de fin de la sous-chaîne. Dans le cadre de l'exemple considéré ici, cette fonction n'a guère d'utilité, mais elle se révèle précieuse lorsqu'il est nécessaire de traiter des portions particulières de chaînes.

La fonction substr s'utilise avec le prototype suivant :

    string substr (string chaîne, int début, int [longueur]) ;

La fonction substr() renvoie une sous-chaîne extraite de la chaîne passée comme argument chaîne.

Pour illustrer l'usage de cette fonction, considérons l'exemple de chaîne suivant :

    $test = "Votre service à la clientèle est excellent" ;

    echo substr($test, 1) ;

Si la fonction substr() est invoquée, en spécifiant uniquement un nombre positif comme argument début, vous obtiendrez la sous-chaîne comprise entre la position début, et la fin de la chaîne. Par exemple, l'exécution de l'instruction suivante :

    echo substr($test, 15) ;

Renvoie "la clientèle est excellent". Notez que les positions dans la chaîne sont numérotées à partir de 0, comme dans les tableaux.

Lorsque la fonction substr() est appelée, en spécifiant uniquement un nombre négatif comme argument début, vous obtenez la sous-chaîne se terminant à la fin de la chaîne et commençant à la position définie par la position de la fin de la chaîne moins longueur caractères. Par exemple, l'exécution de l'instruction qui suit :

    $test = "Votre service à la clientèle est excellent" ;

    echo substr($test, -9) ;

Renvoie la sous-chaîne "excellent".

L'argument longueur permet de spécifier soit le nombre des caractères à renvoyer (si la longueur est un nombre positif), soit le caractère final de la sous-chaîne renvoyée (si la longueur est un nombre négatif). Par exemple, l'exécution de l'instruction qui suit :

    $test = "Votre service à la clientèle est excellent" ;

    echo substr($test, 0, 13) ;

Renvoie les treize caractères de la chaîne, c'est-à-dire "Votre service". La ligne de code suivant :

    $test = "Votre service à la clientèle est excellent" ;

    echo substr($test, 5, -13) ;

Renvoie la sous-chaîne comprise entre le cinquième caractère et le treizième caractère compté à partir de la fin de la chaîne, c'est-à-dire "service à la clientèle".

Comparaison de chaînes :

Jusqu'à présent, nos seules comparaisons de chaînes se sont limitées au test de l'égalité entre deux chaînes, au moyen de l'opérateur ==. Le langage PHP permet d'opérer des comparaisons plus sophistiquées, que nous classerons en deux catégories : les correspondances partielles, et les autres. Nous commencerons par étudier "les autres", et nous examinerons dans un deuxième temps, les correspondances partielles, dont nous aurons besoin pour poursuivre le développement de notre application modèle.

Mise en ordre des chaînes ; strcmp(), strcasecmp() et strnatcmp() :

Ces fonctions permettent d'ordonner des chaînes les unes par rapport aux autres. Elles sont précieuses lors du tri de données.

Le prototype de la fonction strcmp() est le suivant :

    int strcmp (string chaîne_1, string chaîne_2) ;

La fonction strcmp() compare les deux chaînes qui lui sont passées comme arguments. Elle renvoie 0 si les deux chaînes apparaissent égales. Si la chaîne_1 vient après (ou est supérieure à) chaîne_2 d'après l'ordre lexicographique, alors la fonction strcmp() renvoie un nombre supérieur à zéro ; si c'est l'inverse, strcmp() renvoie un nombre inférieur à zéro. Cette fonction est sensible à la casse.

La fonction strcasecmp() est identique à strcmp(), si ce n'est qu'elle n'est pas sensible à la casse.

La fonction strnatcmp() et son homologue non sensible à la casse strnatcasecmp() sont des nouveautés de la version 5 et autres de PHP. Ces fonctions comparent les chaînes d'après l'ordre "naturel", et s'inspirent du comportement humain. Par exemple, la fonction strcmp() classerait la chaine "2" après la chaîne "12", parce que cette dernière est supérieure d'un point de vue lexicographique. Par contre, la fonction strnatcmp() effectuerait le classement inverse. Vous trouverez plus d'informations sur la notion d'ordre naturel via Internet.

Détermination de la longueur d'une chaîne au moyen de la fonction strlen() :

Nous pouvons tester la longueur d'une chaîne, en faisant appel à la fonction strlen(). Celle-ci renvoie la longueur de la chaîne qui lui est passée comme argument. Par exemple, strlen ("Nos clients") renvoie la valeur 11, en comptant l'espace blanc.

La fonction strlen() est utile pour valider les données saisies par l'utilisateur. Par exemple, considérons le cas de l'adresse de courrier électronique entrée dans le formulaire de notre application modèle, et stockée dans la variable $Votre_E_Mail. Vérifier la longueur du contenu d'une variable stockant une adresse email constitue une des méthodes de base de validation de l'adresse de courrier électronique stockée. Une adresse de courrier électronique valide doit compter au moins six caractères (a@a.fr) dans le cas minimaliste d'une adresse se composant d'un code de pays sans deuxième niveau de domaine, d'un nom de serveur à un caractère, et d'une adresse E-Mail d'une seule lettre. Un message d'erreur devrait par conséquent être généré si l'adresse saisie n'a pas la longueur minimale :

    if (strlen ($Votre_Adresse_Mail) < 6 )

    {

        echo "Cette adresse e-mail n'est pas valide" ;

        exit ; // Fin de l'ex&eacute;cution du script PHP

    }

Il s'agit là, bien sûr, d'une méthode simpliste de validation de l'information. Nous verrons de meilleures méthodes dans la prochaine section.

Pour l'instant, nous terminons cette quatrième leçon du premier chapitre et nous verrons dans la prochaine la suite du second chapitre tels que, Localisation de sous-chaînes dans des chaînes strstr(), strchr(), str_replace(), substr_replace(), jeux et classes de caractères, etc. ...










Nombre de pages vues, à partir de cette date : le 23 MAI 2019

compteur de visite

    




Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web. 

Version du site : 10. 5. 14 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 19 MAI 2019.   

Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en MAI 2019.