[SPIP] ~v3.0.12-->3.0.13
[ptitvelo/web/www.git] / www / ecrire / inc / rechercher.php
index 858137f..5b61f7d 100644 (file)
@@ -70,9 +70,21 @@ function expression_recherche($recherche, $options) {
        }
        else{
                // s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP
+               // sauf ceux de moins de 4 lettres (on supprime ainsi 'le', 'les', 'un',
+               // 'une', 'des' ...)
                if (preg_match(",\s+,".$u, $recherche)){
                        $is_preg = true;
-                       $recherche = preg_replace(',\s+,'.$u, '|', $recherche);
+                       $recherche_inter = '|';
+                       $recherche_mots = explode(' ', $recherche);
+                       $min_long = defined('_RECHERCHE_MIN_CAR') ? _RECHERCHE_MIN_CAR : 4;
+                       foreach ($recherche_mots as $mot) {
+                               if (strlen($mot) >= $min_long) {
+                                       $recherche_inter .= $mot.' ';
+                               }
+                       }
+                       // mais on cherche quand même l'expression complète, même si elle
+                       // comporte des mots de moins de quatre lettres
+                       $recherche = rtrim($recherche.preg_replace(',\s+,'.$u, '|', $recherche_inter), '|');
                }
 
                $preg = '/'.str_replace('/', '\\/', $recherche).'/' . $options['preg_flags'];