pas compris ce code REGEXP

WRInaute occasionnel
bonjour
j'aimerais bien comprendre cette syntaxe
Code:
REGEXP '[[:<:]]".$keyword."[[:>:]]'
avez vous une idée car je galère un peu
merci d'avance
 
WRInaute passionné
Salut,

Si je ne me plante pas de trop, cela permet de déterminer les limites d'un mot contrairement à LIKE.
Ainsi pour le mot "Boisé", le regex ira chercher le mot exacte alors que le LIKE ressortira "Boisé", "Bois", "Boi" ...

Bon, c'est à confirmer quand même ...

Exemple :
Code:
$requete = $_POST['requete'];
$query = mysql_query("SELECT * FROM SITE WHERE mot_clef REGEXP '[[:<:]]".$requete."[[:>:]]' ORDER BY id ASC") or die (mysql_error());
 
WRInaute accro
C'est effectivement une extension mysql permettant de trouver les limites d'un mot, un peu comme \b en PCRE, mais avec une notion de début et de fin (alors que \b marque la transition dans n'importe quel sens). Ca matche donc "entre" un caractère qui ne fait pas partie d'un mot (\W en PCRE) et un caractère qui fait partie d'un mot (\w).

La notation [[:xxx:]] permet l'appel à une "classe de caractères" (xxx dans l'exemple), dont certaines sont abrégées dans des raccourcis, comme [[:digit:]] qui est équivalent à \d. [[:<:]] et [[:>:]] ne sont pas standard POSIX, mais sont documentés ici:
http://dev.mysql.com/doc/refman/5.1-maria/en/regexp.html (à la fin de la doc avant les commentaires).

Jacques.
 
Discussions similaires
Haut