..


Liens sponsorisés

Fonctions PCRE expression régulière (et les différences avec les fonctions POSIX)

Article écrit par Max Bossi
Page 1 sur 4

Nous avions déjà évoqué ces derniers jours à travers les pages de notre blog, mais aujourd'hui, je tiens à enquêter sur un sujet que je crois être d'intérêt pour des milliers de développeurs - comme moi - l'utilisation quotidienne de PHP pour développer leurs applications Web.

Depuis la version 5.3 de PHP, en fait, les développeurs qui veulent exploiter le potentiel des expressions régulières ne peuvent plus faire usage de fonctions POSIX (façon de parler ereg () et la famille) mais doit, nécessairement, utiliser les fonctions PCRE (Perl Compatible Regular Expressions), par exemple, preg_match () .

Les fonctions PCRE intégrée à PHP, vous permettent d'utiliser la syntaxe des expressions régulières de Perl typiques (plus précisément, la mise en œuvre actuelle prévoit un soutien à la syntaxe de Perl 5.005), ce qui est légèrement différente de celle des fonctions POSIX. Pour plus d'informations sur la syntaxe de PCRE est possible de consulter le manuel disponible sur le site officiel PCRE.org.

Comparaisons: l'preg_match ()

Si vous souhaitez faire une comparaison entre une chaîne et un modèle (un modèle écrit sous la forme d'expressions régulières) aura besoin d'utiliser preg_match () qui, en fait, remplacez ereg () et eregi ().

En utilisant preg_match () est d'usage courant, assez simple: vous passez la fonction du modèle et de la chaîne à vérifier. Si le motif est satisfaite, la fonction retourne 1 si 0 (ou FALSE si une erreur).

En fait migrer de ereg () n'est pas chose compliquée. Vous aurez besoin de quelques peu d'ingéniosité dans la formulation du modèle.

Voici un exemple:

 



 <? Php







 if (preg_match ('/ mrwebmaster / i', 'Long MrWebmaster vivre!')) {



  



 echo "trouvé";







 Else {}



  



 echo "introuvable";







 }







 ?>

 
C'est la même chose:
 



 <? Php







 if (eregi ('mrwebmaster', 'Long MrWebmaster vivre!')) {



  



 echo "trouvé";







 Else {}



  



 echo "introuvable";







 }







 ?>

 

Dans notre exemple simple d'utilisation preg_match (), nous avons utilisé la chaîne comme un modèle

 



 / Mrwebmaster / s

 
Voyons la syntaxe:
  • / ... / - Délimiter le début et la fin de l'expression;
  • mrwebmaster - est une chaîne simple dont vous voulez vérifier le texte passé comme second argument;
  • i - «i» après la clôture délimiteur indique que la recherche ne doit pas être sensible à la casse (tout comme a été fait en utilisant la fonction (eregi)). Techniquement, cette «i» est un modificateur, dans cette page la liste complète des modificateurs autorisés dans la syntaxe de PCRE.

La différence avec ereg ()

Comme vous pouvez voir la différence avec ereg () ne sont pas beaucoup, nous allons les résumer brièvement:

  • l'utilisation de délimiteurs / ... / (en fait, vous pouvez utiliser d'autres caractères comme séparateur, mais la barre oblique est le choix habituel);
  • insensible à la casse version (eregi ()) est remplacée par l'utilisation de "i" après le délimiteur de fermeture;
  • la présence du caractère / dans le modèle, il faudra (si vous êtes habitué à slash comme séparateur) d'échappement (\ /) afin de ne pas être confondu avec les délimiteurs;
  • Il ya quelques différences mineures dans la gestion des caractères ASCII (les fonctions POSIX, contrairement à la PCRE accepter les caractères numériques ASCII: par ex. Correspond au nombre de 10 et 13 nouveau retour chariot ligne; vice versa avec les fonctions PCRE 10 représente exclusivement le numéro dix).
  • l'ereg function () n'accepte que les trois paramètres (modèle, texte à être vérifié et, éventuellement, un tableau pour stocker les résultats) et preg_match () admet cinq (les deux premiers, nous avons déjà vu, sont nécessaires, les trois autres sont facultatifs );

Sur la base de ce qui précède (et les différences qui ont été mentionnés) on peut considérer à nouveau (partiellement) valide les explications théoriques sur la syntaxe des expressions régulières peuvent être trouvés à cette page de l'article "Expressions régulières en PHP" dédié aux fonctions de vieilles POSIX .

Dans la même catégorie ...
E-Learning
Linux (Cours) Linux (Cours)
Guide complet de système open-source. A partir de 49 €.
MySQL (Cours) MySQL (Cours)
Gestion des bases de données open-source. A partir de 39 €.
PHP (cours) PHP (cours)
Cours complet pour la création de sites Web dynamiques. A partir de 49 €.
Liens sponsorisés