Bonjour à tous,
j'ai un petit soucis avec l'utilisation d'une expression régulière et n'étant pas un pro dans ce domaine, je préfère m'adresser à vous
En gros ce que j'essaie de faire c'est la chose suivante:
- j'ai dans ma base de données un champs de type texte contenant des user agents
- quand je reçois la visite d'un user agent, je dois comparer celui du visiteur à celui de la base
Le problème c'est que le user agent contient des caractères spéciaux utilisés par les expressions régulières et je n'arrive pas à les échapper.
Voici un exemple:
Dans la base j'ai un champs useragent qui contient:
HTC_P3700 Opera,HTC_P3700 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) UP.Link/6.2.3.20.0,Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/1938; U; fr),Opera/9.50 (Windows NT 5.1; U; en),Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/1476; U; en),HTC-P3700-orange/PPC; 480x640; OpVer 30.137.2.732 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11),Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/2392; U; en),Opera/9.5 (Microsoft Windows; PPC; 240x320; HTC_P3650; Opera Mobi/2392; U; fr),Xda_Ignito/480x640 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11),Xda_Ignito/480x640 Opera/9.50 (Windows NT 5.1; U; en),dopod S900_CMCC/5.2.1941/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11),HTC_P3490 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11),Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) HT02A,HTC_P3700 Opera/9.50 (Windows NT 5.1; U; fr)
et dans ma requête SQL j'effectue:
select * from mabase where useragent regexp 'HTC_P3700 Opera/9.50 (Windows NT 5.1; U; en)'
ça ne marche pas à cause des parenthèses et quand je transforme ma requête pour transformer les parenthèses en [(] et [)], ça ne marche pas non plus, il ne me trouve aucun résultat.
Je ne peux pas supprimer la partie entre les (...) car pour certains user agents, cette zone contient des informations essentielles. Je cherche donc un moyen de reprendre les useragents tels qu'ils rentrent et les comparer avec ceux qui sont dans la base.
Quelqu'un a une idée?
Merci!