Rechercher : dans
Par :

Expression régulière PHP

Dernière réponse le 22 sep 2008 à 18:33:34 guewini, le 22 sep 2008 à 14:57:35 
 Signaler ce message aux modérateurs

Bonjour,

Je souhaiterai utiliser la fonction ereg_replace ou preg_replace (je n'en sais trop rien) afin d'arriver au résultat suivant :

Chaine d'origine : [img='url_img']texte alternatif[ /img]

Chaine finale : <img src="url_img" alt="texte alternatif" />

Je n'entrave pas grand chose aux expressions régulière et encore moins à la syntaxe à base de \\x de la chaine de remplacement des fonctions ereg_replace ou preg_replace.

Si quelqu'un peut m'apporter ses lumières je lui en serait reconnaissant

Merci d'avance

1

G_ZOR, le 22 sep 2008 à 16:39:24

Bonjour Guewini,

Voila avec le PCRE "preg_replace" :

$texte est la chaine à traiter.

$texte_final = preg_replace('`\[img=\'(.+)\'\](.+)\[ /img\]`', '<img src="$1" alt="$2" />', $texte);

Répondre à G_ZOR

2

guewini, le 22 sep 2008 à 16:56:53

Merci beaucoup, effectivement ca marche :D il s'agit maintenant que je comprenne pourquoi xD

Si je comprends bien les antislashs échappent les crochets (qui sont utilisés dans les expressions régulières) mais je ne comprend pas trop l'utilisation de l'accent grave (altgr + 7)

Répondre à guewini

3

guewini, le 22 sep 2008 à 17:13:45

Heu et encore une petite question :
Par quoi faut-il que je remplace le .+ pour qu'en cas d'absence de texte alternatif ([img='url_img'][ /img]) cela marche encore ?

Répondre à guewini

4

G_ZOR, le 22 sep 2008 à 17:48:24

Re,

Alors l'accent grave c'est le délimiteur, il est libre mais ce ne doit pas être un métacaractère sinion il y aura le joli message d'erreur 'No ending delimiter found' ou 'Delimiter must be not alphanumeric or backslash'

Pour que cela fonction sans text alternatif, il faut utiliser ça :
preg_replace('`\[img=\'(.+)\'\](.+|)\[ /img\]`', '<img src="$1" alt="$2" />', $texte);

(.+|) au lieu de (.+) et dans ce cas la valeur de alt est nulle.

Pour plus d'informations sur les regex : http://www.expreg.com/index.php

Répondre à G_ZOR

5

 guewini, le 22 sep 2008 à 18:33:34

OK merci ^^ topic résolu :D

Répondre à guewini