option i dans les expressions régulières => alternative ?

WRInaute accro
Salut !

Exemple:

Code:
$chaine='Les Regex par la pratique';
$motif='`regex`i';
preg_match($motif,$chaine);

Comment puis-je faire pour ne pas indiquer l'option i dans le motif de l'expression régulière afin de l'emputer uniquement à un morceaux de la chaîne et non pas toute la chaîne.

La on l'applique pour toute la chaîne:
Code:
$motif='`regex`i';
Mais si je souhaite que ce ne soit que pour une partie:
au lieu que cela s'applique à "regex" en entier je veux que ce soit uniquement pour ege et non pas le r et le x.
(seulement en millieu de chaine par exemple)
 
WRInaute passionné
Pas sûr d'avoir tout saisie, mais tu as déjà des options pour les regexp pour indiquer début, fin de chaine par exemple.
Ou tu tronques ta chaine, vu le nombre de fonctions PHP permetant de manipuler tu devrais trouver ton bonheur.
 
WRInaute passionné
pas très bien exprimé

je ne vois pas de variable pour contenir les captures

eregi pourrait le faire sans probleme

si tu veux amputer needle du 1er et dernier caractere faut peut être lui appliquer un substr

si tu n'as pas besoin de capturer les résultats dans un tableau il y a stristr qui est cool aussi

rog
 
WRInaute accro
Serious a dit:
le 'i' signifie ignorer la casse.
Par contre, ce que tu veux faire n'est pas clair. Donne un exemple.

aïe, désolé pour l'explication médiocre.

pas facile:

l'option i permet, on est d'accord, d'ignorer la casse, MAIS sur l'ensemble de la chaîne indiquée entre ' et '.

seulement je ne veux pas ignorer la casse pour toute la chaine mais uniquement pour une portion se trouvant entre ' et ', et cela je ne sais pas le faire (je sais que c'est possible..).

donc ne pas mettre l'option i, mais autre chose pour indiquer dans cette chaîne : abcdef seul c et d peuvent être en miniscule/majuscule.

c'est un peu plus clair ? :?
 
WRInaute passionné
ab[cC][dD]ef
En perl tu as \l et \u mais ce n'est pas dispo en preg.
Je ne connais pas d'autres solutions.
 
WRInaute accro
Serious a dit:
ab[cC][dD]ef
En perl tu as \l et \u mais ce n'est pas dispo en preg.
Je ne connais pas d'autres solutions.
ah ok. la solution [cC] n'est pas jouable malheureusement..!

\l et \u sert à quoi ? et comment l'employer ?

ça ne fonctionne pas sous PHP avec les regex ?
 
WRInaute accro
ok je viens de trouver dans la doc (enfin!!)

Par exemple, (?im) rend le masque insensible à la casse, et multi-lignes. Il est possible d'annuler ces options en les faisant précéder par un signe - : par exemple (?im-sx), ajoutera les options PCRE_CASELESS et PCRE_MULTILINE mais annulera les options PCRE_DOTALL et PCRE_EXTENDED. Si une option apparaît avant et après le signe moins, l'option sera annulée.

source: http://fr2.php.net/manual/fr/reference. ... syntax.php
 
Discussions similaires
Haut