REGEX ET MYSQL
8 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
REGEX ET MYSQL
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
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
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 :
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
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
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.
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.
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
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\.]+)'";
?>
Merci beaucoup KOogar ta requête
marche parfaitement
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 ?
$req ="SELECT * FROM tb WHERE champ REGEXP '".$longeur."x([0-9\.]+)x([0-9\.]+)'";
marche parfaitement
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 ?
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...
=> 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...
Merci KOogar pour ta réponse.
J'ai essayé cette requête ci-dessous mais ça marche pas
"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 !) ?
J'ai essayé cette requête ci-dessous mais ça marche pas
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 !) ?
8 messages • Page 1 sur 1
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 :
- Gestion des langues et des sessions en PHP / MySQL
- Nouveautés dans l'API Google Analytics (Septembre 2009)
- Passage à l'heure d'été/hiver sur un forum phpBB
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Sortie officielle de GoogleStats v2.0 !
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Le WRInaute du moment
- Interview Wikio : transcript du chat WebRankInfo
- Googlebot, le robot d'indexation de Google
- Le marketing viral au service du référencement
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités






le forum