Skip to content
Extraits de code Groupes Projets
Valider 89cac196 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Quand on passe une REGEXP a mysql avec des crochets par exemple, il faut ecrire dans le squelette

```{texte==\\\\[\\\\[.*<doc[0-9]+>.*\\\\]\\\\]}```
car il y a un echappement pour le squelette SPIP, puis un echappement pour la string passee a mysql, puis un echappement pour la REGEXP mysql
Comme la regexp de sqlite se traite en PHP, on a un niveau d'echappement de moins. Pour etre homogene on enleve donc un niveau d'echappement sur les \\ avant d'envoyer a preg_match

(cf le test unitaire sur les doublons document)
parent d54fc117
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -305,6 +305,8 @@ function _sqlite_func_regexp_match($cherche, $quoi) { ...@@ -305,6 +305,8 @@ function _sqlite_func_regexp_match($cherche, $quoi) {
if (!$quoi and !strlen($quoi)) { if (!$quoi and !strlen($quoi)) {
return false; return false;
} }
// il faut enlever un niveau d'echappement pour être homogène à mysql
$cherche = str_replace('\\\\', '\\', $cherche);
$u = isset($GLOBALS['meta']['pcre_u']) ? $GLOBALS['meta']['pcre_u'] : 'u'; $u = isset($GLOBALS['meta']['pcre_u']) ? $GLOBALS['meta']['pcre_u'] : 'u';
$return = preg_match('%' . $cherche . '%imsS' . $u, $quoi); $return = preg_match('%' . $cherche . '%imsS' . $u, $quoi);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter