REGEX ET MYSQL

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

REGEX ET MYSQL

Message le Sam Avr 15, 2006 1:49

Bonjour,

Petit souci
dans un annuaire le but est de supprimer les URL du genre:
http://www.site.com/pag1/
http://www.site.com/index.html
et ne garder que les url brut
http://www.site.com

DELETE * FROM tb WHERE url REGEXP 'http://www.([[:alnum:]])+([-]?[[:alnum:]])\.([a-z]{2,4})$/([^/]*)'

marche pas

ici c'est bon (ci dessous c'est la partie qui reconait une url classique
http://www.([[:alnum:]])+([-]?[[:alnum:]])\.([a-z]{2,4})$
la fin deconne:
/([^/]*)

pls help


dd32
Modérateur
Modérateur
 
Messages: 3261
Inscription: Ven Sep 09, 2005 10:21

Message le Mar Avr 18, 2006 2:02

Je suis nulle en regexp mais tu ne peux pas faire l'inverse si jamais tu ne trouves pas la soluce ?
Par exemple, tu récupères toutes les urls qui sont ok, ça tu sais faire :
ici c'est bon (ci dessous c'est la partie qui reconait une url classique
-http://www.([[:alnum:]])+([-]?[[:alnum:]])\.([a-z]{2,4})$

puis tu supprimes les autres qui ne conviennent pas en récupérant leurs ids ?... risqué peut-être ?

ps : pense à utiliser -example.com, -example.org et -example.net ou à mettre des traits d'union devant les urls exemples


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

Message le Mer Avr 19, 2006 17:13

..

Pas vraiment ce que je veux. Mais je pense avoir bientot trouver ;- ) Mais tout autre suggestions me serait toujours utile.

..

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 125
Inscription: Jeu Sep 20, 2007 11:11

Message le Sam Nov 17, 2007 22:38

Salut,

Je profite de ce thread pour poster mon petit problème :

J'ai une table qui contient des dimensions (en mm) sous la forme :

6.25x3.50x2.50
10.25x6.58x4.57
8.50x6.69x5.58
etc...

J'ai un formulaire de recherche sur mon site qui permet de rechercher en fonction des dimensions, ce formulaire comporte 3 input text : un nommé "longueur" un autre "largeur" et un autre "hauteur" et qui correspond aux 3 dimensions contenus dans ma table : 6.25 = longueur ; 3.50 = largeur et 2.50 = hauteur (correspondant à ma première ligne de mon exemple ci-dessus)

Je recherche une requête (avec REGEX ou pas) qui me permettrait de sélectionner les entrées dans ma base de données correspondant à une longueur, une largeur et/ou une hauteur et qui seraient entré par l'internaute. J'ai pas mal cherché mais j'ai rien trouvé, pouvez me conseiller une requête ?

Autrement dit, si l'internaute entre 6.25 dans le champ longueur de mon formulaire la requête devra pouvoir trouver le 6.25 qui est contenu dans 6.25x3.50x2.50 de ma table !

Merci pour vos réponses et conseils.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

Message le Dim Nov 18, 2007 9:23

je ne suis pas sur que la commande REGEXP accepte une variable php dans la chaine de travail, j'ai un peu chercher mais je n'ai rien trouver sur ce sujet.
essayons ;)
Code: Tout sélectionner
<?php
// ajouter le signe d'echappement pour que le point (.)
// retrouve sa valeur de caractere simple, ex: 6.23 -> 6\.23
$longeur  = str_replace('.','\.',$longeur);
// requetes
$req  ="SELECT * FROM tb WHERE champ REGEXP '".$longeur."x([0-9\.]+)x([0-9\.]+)'";
// ou peut-etre ?
$req  ="SELECT * FROM tb WHERE champ REGEXP '$longeur\x([0-9\.]+)x([0-9\.]+)'";
?>

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 125
Inscription: Jeu Sep 20, 2007 11:11

Message le Dim Nov 18, 2007 13:20

Merci beaucoup KOogar ta requête

$req ="SELECT * FROM tb WHERE champ REGEXP '".$longeur."x([0-9\.]+)x([0-9\.]+)'";


marche parfaitement :lol:

Là ou ça ce complique un peu c'est que dans mon formulaire de recherche, l'internaute peut aussi renseigner un 4ième champs qui s'appelle "Tolérance" exprimé lui aussi en millimètres et qui est sous la forme une fois remplis, par exemple "0.20". Ce champ permet de définir une longueur mini et une longueur maxi, même chose pour les 2 autres champs "largeur" et "hauteur" auxquels cette tolérance s'applique aussi si les champs "largeur" et "hauteur" sont renseignés.

Donc imaginons que l'internaute renseigne le champ "longueur" (par exemple : "6.15"), le champ "largeur" (par exemple : "4.22"), le champ "hauteur" (par exemple : "3.41") et le champ "tolérance" (par exemple : "0.20") il faudra donc rechercher dans la table les dimensions suivantes :

Longueur de 5.95 à 6.35 et Largeur de 4.02 à 4.42 et hauteur de 3.21 à 3.61

Comment traduire cela par une requête ?


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

Message le Lun Nov 19, 2007 15:35

tant que la chaine accepte les variables externes, c'est possible, le regex aura un motif de ce genre =>

=> 5.95 à 6.35
?(([5-]+)\.[9-]+[0-5]+)?(([6-]+)\.[0-3]+[0-5]+)

Il faut ensuite decomposer les chaines 5.95 et 6.35, reprendre les valeurs et les placer dans la chaine du motif. C'est pas gagné pour autant car il faudra ameliorer le motif pour qu'il puisse prendre les nombres avec des dizaines et des centaines...

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 125
Inscription: Jeu Sep 20, 2007 11:11

Message le Lun Nov 19, 2007 17:12

Merci KOogar pour ta réponse.

J'ai essayé cette requête ci-dessous mais ça marche pas :cry:

Meas REGEXP '?(([5-]+)\.[9-]+[0-5]+)?(([6-]+)\.[0-3]+[0-5]+)x([0-9\.]+)x([0-9\.]+)'


"Meas" est le champ dans ma table qui stock les dimensions.

Pour infos, il pourra y avoir des nombres avec des dizaines mais pas de centaines (ni au delà).

Que faire (c'est pas facile ces regex !) ?


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités