Trucsweb.com

Forum de discussion

 Forum « Programmation PHP » (archives)

Re: eregi_replace()

Envoyé: 21 février 2004, 8h40 par Oznog


Salut,

C'est des expressions régulières (regular expressions ou regex), une méthode très puissante (et très vielle) pour manipuler des chaîne de caractère, basé sur le "match" selonj des "règles". Ton exemple est une suite de "règles" pour extraire un URL de ta $chaîne pour les convertir en hyperlien HTML!

Tout le monde en connaît une, le "wildcard" ou "l'astérisque" qui "MATCH" TOUT.

*.doc = tout ce qui à l'extension ".doc".

Maintenant, il existe un tas de caractères spéciaux ou réservés. Et en raison de son "caractère ;-)" très écourté, c'est très dificile d'interpréter une longue chaîne rapidement. Même qu'il exste des librairie d'expressions régulières!

On dit d'ailleurs souvent qu'une "expression régulière" peut prendre une bonne journée à programmer mais peut aussi prendre un an à décoder par son propre créateur s'il l'a oublier!

Un autre caractère très connu et utilisé partout dont en Javascript ou en PHP est le "escape" (\) ou caractère d'échappement je crois. Qui permet de précisier que le caractère suivant doit être interprété comme un simple caractère ET NON PAS COMME UN CARACTÈRE SPÉCIAUX.

Par exemple si tu veux réellement trouver l'astérisque tu dois faire \*

Dans ton exemple il y en a beaucoup! Pour traiter le guillement comme un simple caractère (\") ou encore le caractère d'échappement lui même (la barre oblique elle même) comme (\\).

Maintenant, la fonction PHP "eregi_replace" utilise justement les expressions régulières pour fonctionner (contrairement au ASP par exemple, bien que le ASP ai aussi cette possibilité et bien sûr les Expressions régulières).

Dans ton exemple, c'est pour traiter un URL, c'est pourquoi on a beaucoup de // : \\ et compagnie. C'Est un exemple simple en fait pour extraire une chaîne d'un texte et de la convertir en hyperlien HTML, en lui ajoutant le balisage HTML.

- Bon, en gros les braquette ([) et parenthèses sont générallement utilisées pour grouper plusieurs caractères tant spéciaux que simple.

- Deux braquettes ([[]]) est une règles prédifinie, il y en a quelque-unes comme alnum (alpha et numérique) donc n'importe quelle lettre ou chiffre.

- Et les nombre, 1,2,3 sont les "MATCH" (désolé je ne trouve pas d'expression ;-) plus précise en français) 1 étant la première occurence trouvé, 2 la seconde et ainsi de suite. C'est pourquoi on les retrouve à la fin car il y a j'oubliais deux sections, le test et match en tant que tell et la réponse ou ce qui remplacera les "occurence trouvé".

En fait ce n'est pas l'endroit pour expliquer ça, il y a beaucoup de théorie (et de pratique) tellement qu'il y a même des site uniquement sur le sujet comme "Les regexp sur www.expreg.com"; (http://www.expreg.com/) va en même temps faire un tour sur la documentation "Nexen" (http://www.nexen.net/docs/php/annotee/ref.regex.php).

Tu as de bonne exemple sur "PHP.net" (http://fr.php.net/manual/fr/function.ereg-replace.php) et des tones ici "Regexlib", une librairie (http://regexlib.com/DisplayPatterns.aspx).
(http://regexlib.com/DisplayPatterns.aspx)

Tu trouvera des tones de listes ou aide mémoire plus simple à consulter sur le Web.

Ciao
Oznog


Réponses

 sp spRe: eregi_replace() teknophil21/2/2004
Aucun médias sociaux
X

Trucsweb.com Connexion

X

Trucsweb.com Mot de passe perdu

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte