Problème dans une expression régulière
biibou
-
biibou -
biibou -
Bonjour,
j'ai un problème avec une expression régulière. Ou plutôt je voudrais savoir s'il y a un moyen de faire quelque chose qui me renvoie (pour le moment une erreur). Je m'explique :
Sur mon site internet, j'ai créé un BBCode et je souhaiterai ajouter une balise qui m'insère un dégradé. J'ai créé la fonction qui à partir d'un texte, d'une couleur de départ et d'une couleur d'arrivé, écrit le texte en dégradé, mais je n'arrive pas à l'appliquer à chaque fois que la balise en question est "appelée".
En résumé, ce que je voudrais savoir c'est si il existe un moyen d'appeler une fonction dans une expression régulière, comme ceci par exemple :
où affiche_degrade revoie le texte avec les balises HTML pour faire le dégradé.
Je précise que cette ligne me renvoie l'erreur suivant : "Parse error: syntax error, unexpected $end in /home/cariibou/public_html/test.php on line 101"
Merci d'avance =)
j'ai un problème avec une expression régulière. Ou plutôt je voudrais savoir s'il y a un moyen de faire quelque chose qui me renvoie (pour le moment une erreur). Je m'explique :
Sur mon site internet, j'ai créé un BBCode et je souhaiterai ajouter une balise qui m'insère un dégradé. J'ai créé la fonction qui à partir d'un texte, d'une couleur de départ et d'une couleur d'arrivé, écrit le texte en dégradé, mais je n'arrive pas à l'appliquer à chaque fois que la balise en question est "appelée".
En résumé, ce que je voudrais savoir c'est si il existe un moyen d'appeler une fonction dans une expression régulière, comme ceci par exemple :
preg_replace('#\[c=([a-f0-9]{6})\](.+)\[/c=([a-f0-9]{6})\]#isU', affiche_degrade("$1","$2","$3"), $_POST['mot']);
où affiche_degrade revoie le texte avec les balises HTML pour faire le dégradé.
Je précise que cette ligne me renvoie l'erreur suivant : "Parse error: syntax error, unexpected $end in /home/cariibou/public_html/test.php on line 101"
Merci d'avance =)
A voir également:
- Problème dans une expression régulière
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Avoir du ping expression ✓ - Forum jeux en ligne
- Expression de recherche - Guide
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? - Forum Windows 7
2 réponses
Salut,
Je connais les regex mais pas bien celles en PHP. Cependant voici ce que je pense.
1)
“unexpected $end “ me donne l’impression que le moteur s’étonne de ce qu’il trouve après le signe $.
Dans quelle partie ? Eh bien dans "$1" dans affiche_degrade("$1","$2","$3") et semblablement dans “$2“ et “$3“ s’il les atteignait avant de bloquer sur “$1“.
Il me semble qu’il faudrait plutôt essayer avec
affiche_degrade("$_POST[1]","$_POST[2]","$_POST[3]")
dans
preg_replace('#\[c=([a-f0-9]{6})\](.+)\[/c=([a-f0-9]{6})\]#isU', affiche_degrade("$_POST[1]","$_POST[2]","$_POST[3]") , $_POST) ;
Je ne comprends pas ce qu’est ’mot’ dans $_POST[’mot’]
2)
Ou alors, la fonction preg_replace() exige-t-elle que la chaîne de remplacement existe de façon explicite avant que son exécution sur le texte exploré commence
et par conséquent il serait impossible de spécifier un remplacement constitué de quelque chose qui dépend fonctionnellement du résultat de chaque match en train d’être détecté.
Ce qui voudrait dire que tu ne pourras pas écrire ton expression comme tu l’as fait.
Je connais les regex mais pas bien celles en PHP. Cependant voici ce que je pense.
1)
“unexpected $end “ me donne l’impression que le moteur s’étonne de ce qu’il trouve après le signe $.
Dans quelle partie ? Eh bien dans "$1" dans affiche_degrade("$1","$2","$3") et semblablement dans “$2“ et “$3“ s’il les atteignait avant de bloquer sur “$1“.
Il me semble qu’il faudrait plutôt essayer avec
affiche_degrade("$_POST[1]","$_POST[2]","$_POST[3]")
dans
preg_replace('#\[c=([a-f0-9]{6})\](.+)\[/c=([a-f0-9]{6})\]#isU', affiche_degrade("$_POST[1]","$_POST[2]","$_POST[3]") , $_POST) ;
Je ne comprends pas ce qu’est ’mot’ dans $_POST[’mot’]
2)
Ou alors, la fonction preg_replace() exige-t-elle que la chaîne de remplacement existe de façon explicite avant que son exécution sur le texte exploré commence
et par conséquent il serait impossible de spécifier un remplacement constitué de quelque chose qui dépend fonctionnellement du résultat de chaque match en train d’être détecté.
Ce qui voudrait dire que tu ne pourras pas écrire ton expression comme tu l’as fait.
Merci pour ta réponse!! Mais je ne comprends ton 2e point...
Pour ce qui est du premier point, $1 $2 et $3 correspondent aux parenthésages de l'expression, donc dans mon cas $1 et $3 correspondent aux codes hexa des couleurs et $2 correspond au texte à colorer. Je ne pense pas que le problème vienne de ça... je pense que le problème vient du fait que j'appelle une fonction pour traiter les résultats!
Donc du coup, je voudrais savoir si c'est bien ça, et surtout comment me sortir de mon problème...
Merci encore =)
Pour ce qui est du premier point, $1 $2 et $3 correspondent aux parenthésages de l'expression, donc dans mon cas $1 et $3 correspondent aux codes hexa des couleurs et $2 correspond au texte à colorer. Je ne pense pas que le problème vienne de ça... je pense que le problème vient du fait que j'appelle une fonction pour traiter les résultats!
Donc du coup, je voudrais savoir si c'est bien ça, et surtout comment me sortir de mon problème...
Merci encore =)