Apprendre à coder sur pierre-giraud.com

DES COURS COMPLETS ET GRATUITS POUR TOUS

SOMMAIRE

Introduction

  1. Présentation du cours
  2. Introduction au PHP
  3. Mettre en place un env. de travail

Les bases en PHP

  1. Syntaxe de base du PHP
  2. Premières instructions PHP
  3. Introduction aux variables PHP
  4. Types de valeurs et concaténation
  5. Opérations sur les variables
  6. Conditions et opérateurs de comparaison
  7. Les conditions if, if...else et if... elseif... else
  8. Utilisation avancée des conditions
  9. Structures ternaires et switch
  10. Les boucles PHP
  11. Découverte des fonctions
  12. La portée des variables
  13. Les constantes PHP
  14. Les variables tableaux PHP
  15. Tableaux associatifs
  16. Tableaux multidimensionnels
  17. Test n°1

Gestion des dates en PHP

  1. Le timestamp
  2. Obtenir et formater une date
  3. Tester la validité d'une date
  4. Test n°2

Opérations sur les fichiers en PHP

  1. Lire, ouvrir, fermer un fichier
  2. Parcourir et lire un fichier par partie
  3. Créer un fichier et écrire dedans
  4. Ecrire dans un fichier
  5. Les instructions include et require
  6. Test n°3

Les variables superglobales

  1. Découverte des variables superglobales
  2. Les cookies
  3. Les sessions
  4. Test n°4

Les expressions régulières et PHP

  1. Découverte des regex
  2. Les fonctions PHP PCRE
  3. Quantifieurs et options
  4. Classes de caractères
  5. Test n°5

L'orienté objet en PHP

  1. Classes, instances et objets
  2. Propriétés et méthodes
  3. Extension de classe et héritage
  4. Le principe d'encapsulation
  5. La méthode constructeur
  6. L'opérateur de résolution de portée et la surcharge
  7. Constantes, méthodes et propriétés statiques
  8. Les classes et méthodes abstraites
  9. Les interfaces
  10. Les méthodes magiques
  11. Le chainage de méthodes
  12. Test n°6

Notions avancées en POO

  1. Le typage explicite
  2. Les traits
  3. Les closures et les classes anonymes
  4. L'auto-chargement des classes
  5. Le mot clef final
  6. Résolution statique à la volée
  7. Parcourir des objets
  8. Le clonage d'objets
  9. Comparaison d'objets
  10. Test n°7

Filtres, erreurs et exceptions

  1. Introduction aux filtres
  2. Utilisation pratique des filtres
  3. Gérer les erreurs en PHP
  4. Gérer les exceptions en PHP

LES CLASSES DE CARACTERES ET LES METACARACTERES DES REGEX

Les classes de caractères

Les classes de caractères vont nous permettre d'utiliser simplement des plages de caractères comme schéma de recherche.

Pour créer une plage de caractères, nous allons devoir encadrer plusieurs caractères par des crochets.

Voyons immédiatement un premier exemple utilisant les classes de caractères.

Utilisation des classes de caractères des regex en PHP

On utilise les classes de caractères des regex pour effectuer des recherches sur des plages de caractères

Dans notre première recherche, on définit la plage de caractères [aeiouy]. En utilisant preg_match_all() avec ce schéma de recherche, cela signifie que l’on recherche toutes les voyelles indépendamment les unes des autres dans notre chaine de caractères.

Dans notre deuxième exemple, on recherche cette fois-ci une voyelle (minuscule ou majuscule) en début de chaine. Comme notre chaine commence par la lettre « b », la recherche échoue.

On va également pouvoir indiquer des intervalles au sein de nos classes de caractères.

Par exemple, on va pouvoir effectuer une recherche sur les lettres de « a » à « f » comme ceci :

Rechercher sur un intervalle de caractères avec les regex en PHP

On cherche n’importe quelle lettre dans l’intervalle avec les regex en PHP

Nous n’en avons pas parlé jusqu’ici, mais on va également pouvoir construire nos regex pour rechercher des chiffres.

Pour rechercher n’importe quel chiffre, on peut par exemple préciser la classe [0-9].

Rechercher un nombre avec les regex en PHP

On utilise les classes de caractères pour rechercher des nombres en PHP avec les regex

On va finalement pouvoir préciser plusieurs intervalles dans une même classe de caractères afin de faire une recherche élargie.

Dans ce cas, il suffit de préciser les différents intervalles ou caractères à l’intérieur des crochets.

Utilisation avancée des classes de caractères en PHP

On mentionne à la fois des plages de caractères et des caractères pour créer nos regex en PHP

Ici, nous utilisons les classes de caractères pour rechercher à la fois des plages de caractères et des caractères seuls.

Vous devez faire attention à un dernier point avec les classes de caractères : si vous utilisez le signe ^ à l’intérieur d’une classe, vous signifiez que vous souhaitez rechercher les caractères qui n’appartiennent pas à votre classe.

Faites bien attention à ne pas confondre le deuxième sens du signe ^ qui, placé en dehors des classes, signifie qu’on souhaite rechercher au début de la chaîne.

Utilisation du signe ^ à l’intérieur des classes de caractères des regex en PHP

Faites bien attention aux différents sens des caractères spéciaux des regex en PHP

Voici un petit récapitulatif sur les classes de caractères :

Classe de caractères Signification
[abcde] Trouve tous les caractères à l’intérieur des crochets
[^abcde] Trouve tout caractère ne se situant pas entre les crochets
[a-z] Trouve n’importe quelle lettre entre a et z
[^a-z] Trouve n’importe quel caractère qui n’est pas une lettre minuscule de l’alphabet
[0-9] Trouve n’importe quel chiffre entre 0 et 9
[^0-9] Trouve n’importe quel caractère qui n’est pas un chiffre compris entre 0 et 9
(jour|soir) Trouve jour et soir

Méfiez vous des lettres accentuées, cédillées, etc. : toutes les lettres qui n'existent pas en anglais ne sont pas inclues dans les intervalles de type [a-z].

Les classes abrégées

Lorsque vous utilisez les regex, vous allez souvent utiliser les mêmes classes de caractères.

Conscients de cela, les créateurs du PHP ont mis à notre disposition des notations abrégées de certaines classes afin de créer nos regex encore plus rapidement.

Métacaractère Signification
. Seul méta-caractère ne possédant pas d’antislash. Trouve tout caractère, sauf un retour à la ligne
\w Trouve toute lettre. Equivalent à [a-zA-Z]
\W Trouve tout ce qui n’est pas une lettre. Equivalent à [^a-zA-Z]
\d Trouve n’importe quel chiffre. Equivalent à [0-9]
\D Trouve tout sauf un chiffre. Equivalent à [^0-9]
\s Trouve un espace
\S Trouve tout sauf un espace
\ba Trouve tout « a » situé en début ou en fin d’un mot
\Ba Trouve tout « a » non situé en début ou en fin de mot
\n Trouve un retour à la ligne (le « \n » en JavaScript)

Voyons ensemble quelques exemples d’utilisation des classes de caractères.

Utilisation des classes abrégées des regex en PHP

On peut utiliser des classes abrégées pour simplifier nos regex

Dans notre première recherche, nous utilisons le signe ^ en début de notre regex et la classe abrégée \w.

Cela signifie donc qu’on cherche une lettre minuscule ou majuscule en début de chaine.

Notre deuxième recherche utilise la classé abrégée \d. Cette fois-ci, on va donc rechercher un chiffre dans la chaine de caractères.

Conclusion sur les expressions régulières

Les expressions régulières sont souvent une partie peu appréciée des élèves car la syntaxe est assez différente de ce qu’on a l’habitude de voir et cela reste souvent très théorique.

Cependant, faites moi confiance : les regex constituent un outil très puissant et incontournable pour vérifier la présence de certains caractères dans des données envoyées par des visiteurs par exemple.

Les regex vont être le meilleur moyen, par exemple, de vérifier qu’un utilisateur a bien entré une adresse email ou un numéro de téléphone valide lors de l’inscription sur votre site par exemple.

Un peu plus tard dans ce cours nous allons étudier le traitement de données issues d’un formulaire en PHP et aurons donc l’occasion de nous exercer concrètement avec les regex.

Dernière chose : pensez bien à échapper à l’aide d’un antislash chacun des caractères spéciaux utilisés par les regex si vous souhaitez rechercher ces caractères dans un texte. Dans le cas contraire, la regex considèrera le caractère avec son sens spécial.

Vous pouvez trouver ci-dessous la liste des principaux caractères utilisés par les regex ainsi que leurs cas d’utilisation.

Notez par ailleurs que pour échapper un antislash il faudra tout simplement un autre antislash.

Caractère spécial Signification
^(à l’extérieur d’une classe) La recherche se fait en début de chaine
$ La recherche se fait en fin de chaine
|(barre verticale) Nous permet de rechercher un caractère ou un autre
[ ] Servent à définir une classe de caractères
{ } Symboles de quantification
? Recherche 0 ou 1 occurrence d’un caractère
+ Cherche 1 occurrence ou plus d’un caractère
* Cherche 0, 1 occurrence ou plus d’un caractère
. (point) Cherche tout sauf un retour à la ligne
\ Caractère d’échappement. Neutralise le sens des caractères spéciaux
( ) Servent à grouper plusieurs caractères

Chapitre précédent