Accueil   |   Forums   |  Offres d'emplois   |  Contact    |   Mon compte   
vendredi 25 juillet 2008 Rechercher :
Déposez votre CV gratuitement sur touslesemplois
 
comparer les prix
» Logiciels
» Jeux vidéos
» Matériel Informatique


» ASP.NET
» ASP
» SQL
» PHP
» JAVASCRIPT
» XML
 


» ACTUALITÉ / DIVERS
» DROIT DE L'INTERNET
» INFOS VIRUS
» PATCHS MICROSOFT
» SÉCURITÉ
» BASES DE DONNÉES
» DOWNLOAD .NET
» LOGITHÈQUE
» SERVICES WEB
» Y SONT FOUS !
» .NET
» ASP
» ASP.NET
» JAVA
» PHP
» XML
» LANGAGE C#
» LANGAGE VB.NET
» UNIX / LINUX
» WINDOWS
» EVÈNEMENTS
» GASP
» MICROSOFT
 



Vous êtes ici : Articles PHP > NOTES DE COURS

Les expressions régulières en PHP
Nommée également Regular Expression (RegExp), une expression régulière permet de caractériser le format d'une chaîne de caractère. Plus précisément, une expression régulière est un motif ou une série de motifs de caractères comparé à une chaîne de caractère. Le but étant de rechercher ou de remplacer un motif dans une chaîne de caractère.


ABONNEZ-VOUS GRATUITEMENT A LA REVUE DE PRESSE "LES Z'ACTUS" ET RECEVEZ CHAQUE JOUR DANS VOTRE BOITE AUX LETTRES LA MEILLEURE INFORMATION DEDIEE AUX WEBMASTERS / DEVELOPPEURS.

Indiquez votre adresse E-mail :

Technologie : PHP 
Date : 29/05/2006   
Auteur : ASP MAGAZINE

Recherche d'un caractère ou d'une liste de caractères dans une chaîne

Cette exemple simple recherche le caractère "a" dans la chaîne $chaine.

<?
$motif = "a";
if (ereg($motif,$chaine)) {
   echo "Le mot $chaine contient le motif $motif";
}
?>

Note : Pour rechercher plusieurs caractères dans la chaîne, il suffit de border de crochets les caractères à rechercher.
$motif="[abc]";
ereg recherche alors toutes les chaînes contenant a,b ou c.

Syntaxe du crochet [ ] :

  • Recherche de caractères
    [abc] : permet de retrouver le caractère a ou b ou c dans une chaine

  • Recherche dans une plage de caractère

    [A-Z] : permet de retrouver toutes les majuscules, de façon général permet de retrouver tous les caractères situés entre la première et la dernière lettre (ici entre A et Z) .
    Ex. [0-9] : retrouve toutes les chaînes contenant un nombre

  • Recherche d'un caractère particulier

    Le caractère "^" étant un caractère réservé, pour le rechercher, il faut le faire précéder d'un antislash "\". De façon général, tous caractères ayant une signification particulière pour les expressions régulières, doit être précédé d'un antislash "\"

    [\^] : recherche le caractère "^" dans la chaîne

    Caractères à signification particulière : ^ $ ( ) | * + ? { } \ . [ ]

  • Exclure une plage de caractère

    Le caret ^ placé devant une séquence du type car1-car2 permet d'exclure tous les caractères inclus entre car1 et car2.

    Ex. [^0-9] : exclu les chiffres de la chaine
    >> Voir également Annexe

Recherche d'une chaîne de caractère

Dans la partie précédente, nous recherchions des chaînes contenant au moins un des caractères du motif spécifié (ou), maintenant abordons la recherche dans le cas ou l'ensemble du motif est contenu dans la chaine de caractère.

<?
/* on recherche dans cet exemple
le mot clermont dans la chaine $chaine
*/

$motif = "clermont";
if (ereg($motif,$chaine)) {
   echo "Le mot $chaine contient le motif $motif";
}
?>

Syntaxe pour la recherche de chaine de caractère

  • Le caractère .
    Le caractère "." permet de remplacer un caractère.

    Ex. $motif = "pap." pourra retourner "pape" ou "papa"

  • Le caractère ?
    permet d'indiquer que le caractère précédent peut apparaître ou non dans la chaîne recherchée.

    Ex. $motif = "belg?" pourra retourner "belgique" ou "belle"

  • Le caractère +
    permet d'indiquer que le caractère précédent peut apparaître une ou plusieurs fois dans la chaîne

    Ex. "b+" pourra retourner tous les mots contenant "bb" ou "b" ou "bbbbb"

  • Le caractère *
    identique au précédent, si ce n'est que le caractère précédent peut également ne pas apparaître dans la chaîne

    Ex. "pa*" pourra retourner "paris" ou "papa"


  • La suite .*
    retrouve n'importe quelle série de caractère

    Ex. "p.*" pourra retourner "période" ou "papa" ou "paris"

Retrouver un nombre fini de motif

Il est possible avec les expressions régulières de retrouverdes motifs apparaissant un nombre limité de fois dans la chaine spécifiée.

On utilise pour cela les caractères spéciaux { }

  • "x{2,3}" retrouve une chaine contenant au moins une séquence de 2 "x" et au plus 3 "x"
  • "x{2,}" retrouve une chaine de caractère contenant au moins une séquence de 2 "x" ou plus
  • "a.{2}eler" retrouve une chaine contenant une séquence de 2 caracères identiques (ex. "appeler")

  • {n} Le caractère apparaît exactement n fois.
  • {n,} Le caractère apparaît au moins n fois.
  • {m,n} Le caractère apparaît au moins m fois, mais pas plus de n fois.

La position des caractères

Il est possible de retrouver tous les motifs situés en début ou fin de la chaine spécifiée.

Exemple :

"^Clermont" retrouve toutes les chaînes commencant pas Clermont
et
"Clermont$" retrouve toutes les chaînes finissant par Clermont

ANNEXE

Tableau récapitulant les motifs des Expressions Régulières : norme POSIX 1003.2

Séquence Signification
[[:alnum:]] - [A-Za-z0-9] Caractères alphanumériques
[[:alpha:]] - [A-Za-z] Caractères alphabétiques
[[:digit:]]- [0-9] Caractères numériques
[[:blank:]] -[ \x09] Espaces ou tabulations
[[:xdigit:]] -[0-9a-fA-F] Caractères héxadécimaux
[[:graph:]] -[!~~] Caractères affichables et imprimables
[[:lower:]] - [a-z] Caractères en minuscules
[[:upper:]] - [A-Z] Caractères en majuscules
[[:punct:]] -[!-/:-@[-'{-~] Caractères de ponctuation
[[:space:]] - [ \t\ v \f] Tout type d'espace
[[:cntrl:]] - [\x00-\x19\x7F] Caractères d'échappement
[[:print:]] - [~~] Caractères imprimables, excepté les caractères de contrôle


Proregna - L'hébergement ASP.NET


A RETENIR CETTE SEMAINE
16/07/2008 - Windows Server 2008 : Network Access Protection
Le nouveau système d’exploitation serveur de Microsoft, Windows Server 2008, apporte avec lui de nou ...
16/07/2008 - Webcasts - Développement parallèle, à l'aube d'une nouvelle ère
Avec l'avénement des multi-coeurs, le développement parallèle devient une necéssité. Dans cette séri ...
16/07/2008 - J'en ai rien à coder - Votre devoir de vacances sur Silverlight !
Qu'est-ce que Silverlight ? Une nouvelle technologie Web permettant d'exécuter des RIA sur un large ...
16/07/2008 - Quelques petits tests sur les bases embarquées
Dans ce billet, Ayende réalise un benchmarking de plusieurs "petites" bases de données embarquées. S ...
15/07/2008 - Présentation d'ASP.NET Dynamic Data
Dynamic Data est une nouvelle technologie inclue dans l' "Asp.net 3.5 Extension CTP ". Elle fournit ...
15/07/2008 - Silverlight 2 - Les webcasts de l'événement sont en ligne
L’objectif de cette journée était de comprendre les limitations de Silverlight 1, et d’appréhender l ...
15/07/2008 - Cache transparent et Entity Framework
La gestion du cache (1er et second niveau) est une fonctionnalité très importante d'un outil de mapp ...
(c) 1999-2006 ASP MAGAZINE SARL
Partenaires : Codes sources c2i ASP-PHP
Hébergement serveurs dédiés Windows


Hit-Parade