Remplacer ereg

Le
Pascale
J'ai une expression du genre :
if (eregi("^SAINT ",$ville))

Je sais qu'il faut remplacer le ereg par un preg_match, mais je n'ai pas
compris où caser le paramètre i Désolée de poser une question aussi
bête, mais c'est une information que je n'ai pas su trouver dans la
documentation PHP.

--
Pascale
http://www.la-grille-verte.net
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #23151081
Bonjour,

Le 23/02/2011 18:28, Pascale a écrit :
J'ai une expression du genre :
if (eregi("^SAINT ",$ville))

Je sais qu'il faut remplacer le ereg par un preg_match, mais je n'ai pas
compris où caser le paramètre i... Désolée de poser une question aussi
bête, mais c'est une information que je n'ai pas su trouver dans la
documentation PHP.



Tu as plusieurs choix possibles.

Le plus simple consiste à mettre l'option après le délimiteur de fin,
ce qui rend l'option globale :
preg_match("/^SAINT /i", $ville)

Une autre façon de donner une option globale consiste à la mettre dans
les paramètres d'appel :
preg_match("/^SAINT /", $ville, $matches, PCRE_CASELESS)

Sinon, tu peux le mettre à l'intérieur de la chaîne de recherche, ce qui
permet éventuellement de restreindre l'option à une sous-chaîne. Pour la
chaîne complète, ça serait :
preg_match("/(?i)^SAINT /", $ville)
ou :
preg_match("/(?i:^SAINT )/", $ville)

Mais encore une fois, pour remplacer un eregi, je te conseille la
première forme, c'est la plus simple. Il sera temps ensuite de te
renseigner sur les autres si tu as des besoins plus spécifiques.

Cordialement,
--
Olivier Miakinen
Jean-Francois Ortolo
Le #23151761
Le 23/02/2011 18:28, Pascale a écrit :
J'ai une expression du genre :
if (eregi("^SAINT ",$ville))

Je sais qu'il faut remplacer le ereg par un preg_match, mais je n'ai pas
compris où caser le paramètre i... Désolée de poser une question aussi
bête, mais c'est une information que je n'ai pas su trouver dans la
documentation PHP.





Réponse :

Regexp preg_match() équivalente à ce que tu écris :

if(preg_match("/^SAINT /i", $ville))

Les caractère slashe "/" est dans ce cas le caractère délimiteur, et
le caractère délimiteur ne doit pas apparaître dans le token $ville

Tout dépend donc de ce à quoi tu peux t'attendre dans le token $ville

Si $ville est censée pouvoir contenir "/", mais ne peut pas contenir
"#", alors le caractère délimiteur peut être "#", mais pas "/".

Bien à vous.

Amicalement.

Jean-François Ortolo

--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr
Pascale
Le #23151811
Olivier Miakinen news:4d6546b5$:

Mais encore une fois, pour remplacer un eregi, je te conseille la
première forme, c'est la plus simple. Il sera temps ensuite de te
renseigner sur les autres si tu as des besoins plus spécifiques.



Je te remercie, c'est ce que je vais faire. En plus c'est pour une fonction
que j'utilise une fois tous les 36 du mois, et la solution que tu m'as
donnée convient tout à fait à ce que je cherche.

--
Pascale
http://www.la-grille-verte.net
Pascale
Le #23155121
Jean-Francois Ortolo news:4d654769$0$32506$:

if(preg_match("/^SAINT /i", $ville))

Les caractère slashe "/" est dans ce cas le caractère délimiteur, et
le caractère délimiteur ne doit pas apparaître dans le token $ville

Tout dépend donc de ce à quoi tu peux t'attendre dans le token $ville

Si $ville est censée pouvoir contenir "/", mais ne peut pas contenir
"#", alors le caractère délimiteur peut être "#", mais pas "/".



Bonne remarque, merci. En effet, je n'exclus pas que le nom de ville puisse
contenir un « / », par contre, « # » est plus que très très improbable.
Faut-il spécifiquement « déclarer » quelque part que le séparateur est #,
ou bien est-ce qu'il suffit de le substituer purement et simplement à / ?

--
Pascale
http://www.la-grille-verte.net
Olivier Miakinen
Le #23155171
Le 24/02/2011 21:45, Pascale a écrit :

if(preg_match("/^SAINT /i", $ville))

Si $ville est censée pouvoir contenir "/", mais ne peut pas contenir
"#", alors le caractère délimiteur peut être "#", mais pas "/".



Bonne remarque, merci. En effet, je n'exclus pas que le nom de ville puisse
contenir un « / », par contre, « # » est plus que très très improbable.
Faut-il spécifiquement « déclarer » quelque part que le séparateur est #,
ou bien est-ce qu'il suffit de le substituer purement et simplement à / ?




Attention à la coquille, lire « non alphanumérique » et pas
« alphanumérique », ou bien aller voir la version originale en
anglais :

Par exemple :
if(preg_match("#^SAINT #i", $ville))
if(preg_match("+^SAINT +i", $ville))
if(preg_match("%^SAINT %i", $ville))
if(preg_match("!^SAINT !i", $ville))
if(preg_match(":^SAINT :i", $ville))
etc.

ou bien :
if(preg_match("{^SAINT }i", $ville))
Jean-Francois Ortolo
Le #23155241
Le 24/02/2011 21:45, Pascale a écrit :
Jean-Francois Ortolo news:4d654769$0$32506$:

if(preg_match("/^SAINT /i", $ville))

Les caractère slashe "/" est dans ce cas le caractère délimiteur, et
le caractère délimiteur ne doit pas apparaître dans le token $ville

Tout dépend donc de ce à quoi tu peux t'attendre dans le token $ville

Si $ville est censée pouvoir contenir "/", mais ne peut pas contenir
"#", alors le caractère délimiteur peut être "#", mais pas "/".



Bonne remarque, merci. En effet, je n'exclus pas que le nom de ville puisse
contenir un « / », par contre, « # » est plus que très très improbable.
Faut-il spécifiquement « déclarer » quelque part que le séparateur est #,
ou bien est-ce qu'il suffit de le substituer purement et simplement à / ?





Bonjour Madame ( ou Mademoiselle ;) )

C'est très simple.

Le fait que le caractère est le caractère délimiteur, est indiqué par
le fait qu'il suit ( et précède ), les doubles-quotes ( " ) entourant la
chaîne comparaison.

Ou, plus exactement, ce caractère délimiteur, est le caractère qui
délimite la chaîne, c'est-à-dire qui la commence, et la termine.

Il va de soi, que le token de comparaison entre les caractères
délimiteurs, n'inclue pas les caractère délimiteurs, pour ce qui est du
matchage de $ville, à ce token de comparaison.

Quant à la syntaxe de ce token de comparaison, c'est la syntaxe PCRE,
et non pas la syntaxe Posix, donc il peut parfois y avoir des
différences. Cependant, dans votre cas, le token de comparaison est
valide d'après les deux syntaxes, donc la syntaxe PCRE, ce qui fait que
le token est valide.

Donc, vous remplacez / par # , à la condition expresse, que vous
soyez aboslument sûre, que # ne figurera pas dans $ville, autrement il y
aurait une erreur à à l'exécution du script php, qui s'arrêterait à ce
moment-là.

Il va de soi, que n'importe quel caractère peut faire office de
caractère délimiteur, pour peu qu'il n'apparaisse pas dans $ville

J'espère que c'est plus clair maintenant. ;)

Bien à vous.

Amicalement.

Jean-François Ortolo

--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr
Pascale
Le #23155921
Jean-Francois Ortolo news:4d66c7c0$0$18799$:

Bonjour Madame



Madame, ça ira (-:

Merci à tous les deux, Jean-François et Olivier, j'ai la réponse à mon
problème et les explications (compréhensibles même pour moi) qui vont avec,
donc c'est parfait !

--
Pascale
http://www.la-grille-verte.net
Publicité
Poster une réponse
Anonyme