Je m'attendais à ce qu'il mette en majuscule les caractères minuscules
séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca
veut dire qu'on ne peut pas insérer d'instructions en PHP dans les
expressions régulières ?
'' = chaine de caractère où rien ne sera interprêté "" = chaine de caractère dans laquelle les $variables seront remplacées par leur valeur. . = concaténation de chaines
Je m'attendais à ce qu'il mette en majuscule les caractères minuscules séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca veut dire qu'on ne peut pas insérer d'instructions en PHP dans les expressions régulières ?
Les expression régulières n'ont absolument rien à avoir là dedans. C'est un problème de SYNThAXE PHP !
strtoupper ('$1'); ne renvoie pas la valeur en majuscule de $1, elle renvoie la chaine de caractères en majuscules de '$1'. Ici, avec des simples quotes, $1 est interprêté en tant que tel, en tant que chaine de caractère pûre.
En somme, strtoupper ('$1') renvoie: $1
Car '$' et '1' n'ont pas de majuscules affichables.
'' = chaine de caractère où rien ne sera interprêté
"" = chaine de caractère dans laquelle les $variables seront remplacées
par leur valeur.
. = concaténation de chaines
Je m'attendais à ce qu'il mette en majuscule les caractères minuscules
séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca
veut dire qu'on ne peut pas insérer d'instructions en PHP dans les
expressions régulières ?
Les expression régulières n'ont absolument rien à avoir là dedans. C'est
un problème de SYNThAXE PHP !
strtoupper ('$1'); ne renvoie pas la valeur en majuscule de $1, elle
renvoie la chaine de caractères en majuscules de '$1'. Ici, avec des
simples quotes, $1 est interprêté en tant que tel, en tant que chaine de
caractère pûre.
En somme, strtoupper ('$1') renvoie:
$1
Car '$' et '1' n'ont pas de majuscules affichables.
'' = chaine de caractère où rien ne sera interprêté "" = chaine de caractère dans laquelle les $variables seront remplacées par leur valeur. . = concaténation de chaines
Je m'attendais à ce qu'il mette en majuscule les caractères minuscules séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca veut dire qu'on ne peut pas insérer d'instructions en PHP dans les expressions régulières ?
Les expression régulières n'ont absolument rien à avoir là dedans. C'est un problème de SYNThAXE PHP !
strtoupper ('$1'); ne renvoie pas la valeur en majuscule de $1, elle renvoie la chaine de caractères en majuscules de '$1'. Ici, avec des simples quotes, $1 est interprêté en tant que tel, en tant que chaine de caractère pûre.
En somme, strtoupper ('$1') renvoie: $1
Car '$' et '1' n'ont pas de majuscules affichables.
Je m'attendais à ce qu'il mette en majuscule les caractères minuscules séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca veut dire qu'on ne peut pas insérer d'instructions en PHP dans les expressions régulières ?
Si, mais RTFM (option e ; et strtoupper doit faire partie de la chaîne passée à preg_replace, ce qui n'est pas le cas ici).
http://fr2.php.net/preg_replace#id5801655
Les expression régulières n'ont absolument rien à avoir là dedans. C'est un problème de SYNT[]AXE PHP !
Les deux, mon capitaine. C'est surtout un problème de syntaxe propre à preg_replace avec l'option e.
strtoupper ('$1'); ne renvoie pas la valeur en majuscule de $1, elle renvoie la chaine de caractères en majuscules de '$1'.
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne ' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de strtoupper du tout.
Ici, avec des simples quotes, $1 est interprêté en tant que tel, en tant que chaine de caractère pûre.
Ce ne serait pas mieux en remplaçant les simples quotes par des doubles, ni d'ailleurs en les supprimant.
Je m'attendais à ce qu'il mette en majuscule les caractères minuscules
séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca
veut dire qu'on ne peut pas insérer d'instructions en PHP dans les
expressions régulières ?
Si, mais RTFM (option e ; et strtoupper doit faire partie de la chaîne
passée à preg_replace, ce qui n'est pas le cas ici).
http://fr2.php.net/preg_replace#id5801655
Les expression régulières n'ont absolument rien à avoir là dedans. C'est
un problème de SYNT[]AXE PHP !
Les deux, mon capitaine. C'est surtout un problème de syntaxe propre à
preg_replace avec l'option e.
strtoupper ('$1'); ne renvoie pas la valeur en majuscule de $1, elle
renvoie la chaine de caractères en majuscules de '$1'.
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne
' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de
strtoupper du tout.
Ici, avec des
simples quotes, $1 est interprêté en tant que tel, en tant que chaine de
caractère pûre.
Ce ne serait pas mieux en remplaçant les simples quotes par des doubles,
ni d'ailleurs en les supprimant.
Je m'attendais à ce qu'il mette en majuscule les caractères minuscules séparés par des espaces dans une chaine. Or ça ne fonctionne pas. Ca veut dire qu'on ne peut pas insérer d'instructions en PHP dans les expressions régulières ?
Si, mais RTFM (option e ; et strtoupper doit faire partie de la chaîne passée à preg_replace, ce qui n'est pas le cas ici).
http://fr2.php.net/preg_replace#id5801655
Les expression régulières n'ont absolument rien à avoir là dedans. C'est un problème de SYNT[]AXE PHP !
Les deux, mon capitaine. C'est surtout un problème de syntaxe propre à preg_replace avec l'option e.
strtoupper ('$1'); ne renvoie pas la valeur en majuscule de $1, elle renvoie la chaine de caractères en majuscules de '$1'.
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne ' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de strtoupper du tout.
Ici, avec des simples quotes, $1 est interprêté en tant que tel, en tant que chaine de caractère pûre.
Ce ne serait pas mieux en remplaçant les simples quotes par des doubles, ni d'ailleurs en les supprimant.
(pas absolumpent certain avec $1 au lieu de 1, mais c'est à essayer)
Sebastiaan 'CrashandDie' Lauwers
Olivier Miakinen wrote:
Les deux, mon capitaine. C'est surtout un problème de syntaxe propre à preg_replace avec l'option e.
Oh Captain, my Captain,
J'ai jamais rien capté aux expressions régulières, et me suis jamais penché dessus plus que ça, sauf quand j'en avais besoin rapidement, donc les particularités, j'avoue que je suis passé dessus un peu vite...
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne ' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de strtoupper du tout.
Oui ok, parceque strtoupper () ne peut pas changer '$1' en quoi que ce soit d'autre, non ?
Ce ne serait pas mieux en remplaçant les simples quotes par des doubles, ni d'ailleurs en les supprimant.
Hein ?
Aaaah, mais c'est pas parceque $1 vient justement de preg_* ? J'avais pris ça comme une très très mauvaise habitude de nommage de variables...
Pas mieux, puisque le $1 n'a pas de sens en dehors du preg_replace. Ce serait plutôt :
[...]
Non oui ok, désolé, j'avoue que j'avais zappé l'histoire de $1... Merci pour la rectification...
S.
Olivier Miakinen wrote:
Les deux, mon capitaine. C'est surtout un problème de syntaxe propre à
preg_replace avec l'option e.
Oh Captain, my Captain,
J'ai jamais rien capté aux expressions régulières, et me suis jamais
penché dessus plus que ça, sauf quand j'en avais besoin rapidement, donc
les particularités, j'avoue que je suis passé dessus un peu vite...
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne
' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de
strtoupper du tout.
Oui ok, parceque strtoupper () ne peut pas changer '$1' en quoi que ce
soit d'autre, non ?
Ce ne serait pas mieux en remplaçant les simples quotes par des doubles,
ni d'ailleurs en les supprimant.
Hein ?
Aaaah, mais c'est pas parceque $1 vient justement de preg_* ? J'avais
pris ça comme une très très mauvaise habitude de nommage de variables...
Pas mieux, puisque le $1 n'a pas de sens en dehors du preg_replace. Ce
serait plutôt :
[...]
Non oui ok, désolé, j'avoue que j'avais zappé l'histoire de $1... Merci
pour la rectification...
Les deux, mon capitaine. C'est surtout un problème de syntaxe propre à preg_replace avec l'option e.
Oh Captain, my Captain,
J'ai jamais rien capté aux expressions régulières, et me suis jamais penché dessus plus que ça, sauf quand j'en avais besoin rapidement, donc les particularités, j'avoue que je suis passé dessus un peu vite...
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne ' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de strtoupper du tout.
Oui ok, parceque strtoupper () ne peut pas changer '$1' en quoi que ce soit d'autre, non ?
Ce ne serait pas mieux en remplaçant les simples quotes par des doubles, ni d'ailleurs en les supprimant.
Hein ?
Aaaah, mais c'est pas parceque $1 vient justement de preg_* ? J'avais pris ça comme une très très mauvaise habitude de nommage de variables...
Pas mieux, puisque le $1 n'a pas de sens en dehors du preg_replace. Ce serait plutôt :
[...]
Non oui ok, désolé, j'avoue que j'avais zappé l'histoire de $1... Merci pour la rectification...
S.
Olivier Miakinen
J'ai jamais rien capté aux expressions régulières, [...]
Il faut dire que là c'est une utilisation un peu complexe, et d'ailleurs Mihamina Rakotomandimby avait probablement raison en proposant plutôt de décomposer (peut-être en utilisant preg_replace_callback).
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne ' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de strtoupper du tout.
Oui ok, parceque strtoupper () ne peut pas changer '$1' en quoi que ce soit d'autre, non ?
[...]
Aaaah, mais c'est pas parceque $1 vient justement de preg_* ? J'avais pris ça comme une très très mauvaise habitude de nommage de variables...
En fait, le problème principal tenait à ce que, dans la proposition d'Edo comme dans la tienne, la fonction strtoupper() était appelée *avant* la fonction preg_replace().
Pour simplifier, je reprends les deux cas de figure avec des fonctions que je nomme f1 et f2 :
1) f1(f2()) ----------- Ici, la fonction f2() est appelée en premier, et c'est sa valeur de retour qui est passée en paramètre à la fonction f1(), appelée ensuite.
2) f1('f2()') ------------- Ici c'est la fonction f1() qui est appelée d'abord, avec comme paramètre la chaîne 'f2()'. Si f1() en décide ainsi, elle peut alors évaluer le paramètre reçu en supposant que c'est du code, et dans ce cas la fonction f2() sera appelée à l'intérieur de la fonction f1().
Le cas (1) est celui du code d'Edo ; le cas (2) est celui prévu pour la fonction preg_replace() avec l'option 'e'.
J'ai jamais rien capté aux expressions régulières, [...]
Il faut dire que là c'est une utilisation un peu complexe, et d'ailleurs
Mihamina Rakotomandimby avait probablement raison en proposant plutôt de
décomposer (peut-être en utilisant preg_replace_callback).
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne
' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de
strtoupper du tout.
Oui ok, parceque strtoupper () ne peut pas changer '$1' en quoi que ce
soit d'autre, non ?
[...]
Aaaah, mais c'est pas parceque $1 vient justement de preg_* ? J'avais
pris ça comme une très très mauvaise habitude de nommage de variables...
En fait, le problème principal tenait à ce que, dans la proposition
d'Edo comme dans la tienne, la fonction strtoupper() était appelée
*avant* la fonction preg_replace().
Pour simplifier, je reprends les deux cas de figure avec des fonctions
que je nomme f1 et f2 :
1) f1(f2())
-----------
Ici, la fonction f2() est appelée en premier, et c'est sa valeur de
retour qui est passée en paramètre à la fonction f1(), appelée ensuite.
2) f1('f2()')
-------------
Ici c'est la fonction f1() qui est appelée d'abord, avec comme paramètre
la chaîne 'f2()'. Si f1() en décide ainsi, elle peut alors évaluer le
paramètre reçu en supposant que c'est du code, et dans ce cas la
fonction f2() sera appelée à l'intérieur de la fonction f1().
Le cas (1) est celui du code d'Edo ; le cas (2) est celui prévu pour la
fonction preg_replace() avec l'option 'e'.
J'ai jamais rien capté aux expressions régulières, [...]
Il faut dire que là c'est une utilisation un peu complexe, et d'ailleurs Mihamina Rakotomandimby avait probablement raison en proposant plutôt de décomposer (peut-être en utilisant preg_replace_callback).
Plus exactement elle renvoie la chaîne '$1', et c'est donc la chaîne ' $1 ' qui est passée à preg_replace, comme s'il n'y avait pas de strtoupper du tout.
Oui ok, parceque strtoupper () ne peut pas changer '$1' en quoi que ce soit d'autre, non ?
[...]
Aaaah, mais c'est pas parceque $1 vient justement de preg_* ? J'avais pris ça comme une très très mauvaise habitude de nommage de variables...
En fait, le problème principal tenait à ce que, dans la proposition d'Edo comme dans la tienne, la fonction strtoupper() était appelée *avant* la fonction preg_replace().
Pour simplifier, je reprends les deux cas de figure avec des fonctions que je nomme f1 et f2 :
1) f1(f2()) ----------- Ici, la fonction f2() est appelée en premier, et c'est sa valeur de retour qui est passée en paramètre à la fonction f1(), appelée ensuite.
2) f1('f2()') ------------- Ici c'est la fonction f1() qui est appelée d'abord, avec comme paramètre la chaîne 'f2()'. Si f1() en décide ainsi, elle peut alors évaluer le paramètre reçu en supposant que c'est du code, et dans ce cas la fonction f2() sera appelée à l'intérieur de la fonction f1().
Le cas (1) est celui du code d'Edo ; le cas (2) est celui prévu pour la fonction preg_replace() avec l'option 'e'.