Problème de masque dans un preg_match

Eléphant du PHP | 428 Messages

29 sept. 2009, 19:08

Bonjour, je désirerai savoir comment il est possible de modifier le masque du preg_match pour que ce dernier puisse vérifier plus que les 4 premières lettre (http).
if (preg_match("/\bhttp\b/i", $url)) {}
Ce que j'aimerai :
if (preg_match("/\bhttp://www.monsite\b/i", $url)) {}
Le problème est que le preg_match me signale une erreur de masque et comme je n'y connais rien aux masques, je me tourne vers votre science.


Merci d'avance,
raph

Mammouth du PHP | 2937 Messages

29 sept. 2009, 19:23

Il y a une source potentielle de conflit entre les délimiteurs de l'expression rationnelle, d'une part, et les /, d'autre part.

De deux choses l'une, soit tu échappes les /
if (preg_match ('/\bhttp:\/{2}www\.monsite\b/i', $url)) {}
soit tu utilises un autre délimiteur d'expression rationnelle (comme le # ou l'@)
if (preg_match ('#\bhttp:/{2}www\.monsite\b#i', $url)) {}
À noter que tu dois aussi échapper le point si tu le cherches en tant que tel et non en tant que masque.

Eléphant du PHP | 428 Messages

30 sept. 2009, 12:34

merci ;)