function store_in_tree($t, $search_linked_words)
 {
     // Mot ou expression ?
     if (!$t->sub && $t->word) {
         //C'est un mot
         // Synonyme activé && ce n'est pas une expression commence par '_xx*' ?
         if ($search_linked_words && !$this->start_with) {
             // Oui, Synonyme activé
             // C'est un littéral ?
             if ($t->literal) {
                 // Oui, c'est un littéral
                 // Recherche de synonymes
                 $synonymes = $this->get_synonymes($t->word);
                 $mots = $t->word;
                 // Y-a-t'il des synonymes ?
                 if ($synonymes) {
                     // Oui il y a des synonymes
                     // Pour chaque synonyme et le terme ajout à $t->sub
                     $op_sub = "";
                     foreach ($synonymes as $synonyme => $ponderation) {
                         $t->sub[] = new term($synonyme, 0, 0, 0, $op_sub, "", $ponderation);
                         $this->calcul_term($t->sub[count($t->sub) - 1], $synonyme, 0, $ponderation);
                         $op_sub = "or";
                     }
                     // Ajout du term force litéral à 1
                     $t->word = "";
                     $t->sub[] = new term($mots, 1, 0, 0, $op_sub, "", $t->pound);
                     $this->calcul_term($t->sub[count($t->sub) - 1], $mots, 1, $t->pound);
                     $op_sub = "or";
                 }
             } else {
                 // Non, ce n'est pas un littéral
                 // Recherche de synonymes
                 $synonymes = $this->get_synonymes($t->word);
                 $mots = $t->word;
                 $t->word = "";
                 // Y-a-t'il des synonymes ?
                 if ($synonymes) {
                     // Oui il y a des synonymes
                     foreach ($synonymes as $synonyme => $ponderation) {
                         $liste_mots[$synonyme] = $ponderation;
                     }
                 }
                 // Suite et, Non, il n'y a pas de synonyme
                 // Nettoyage des caractères
                 $mot_clean = convert_diacrit($mots);
                 $mot_clean = pmb_alphabetic('^a-z0-9\\s\\*', ' ', pmb_strtolower($mot_clean));
                 // Nettoyage des mots vides
                 $mot_clean_vide = $this->nettoyage_mot_vide($mot_clean);
                 // Pour chaque mot nettoyer
                 if (count($mot_clean_vide)) {
                     foreach ($mot_clean_vide as $word) {
                         // Recherche de synonymes
                         $synonymes_clean = $this->get_synonymes($word);
                         // Pour chaque synonyme et le terme ajout à $t->sub
                         if (count($synonymes_clean)) {
                             foreach ($synonymes_clean as $synonyme => $ponderation) {
                                 $liste_mots[$synonyme] = $ponderation;
                             }
                         }
                     }
                 }
                 // ajout des mots nettoyés
                 if (count($mot_clean_vide)) {
                     foreach ($mot_clean_vide as $word) {
                         $liste_mots[$word] = $t->pound;
                     }
                 }
                 if (!count($t->sub)) {
                     $op_sub = '';
                 } else {
                     $op_sub = "or";
                 }
                 if (count($liste_mots) > 1) {
                     $t->word = "";
                     // Plusieurs mots
                     foreach ($liste_mots as $word => $ponderation) {
                         $t->sub[] = new term($word, 0, 0, 0, $op_sub, "", $ponderation);
                         $this->calcul_term($t->sub[count($t->sub) - 1], $word, 0, $ponderation);
                         $op_sub = "or";
                     }
                     //$t->sub=$terms;
                 } elseif (count($liste_mots) == 1) {
                     // Un seul mot
                     foreach ($liste_mots as $word => $ponderation) {
                         $t->word = $word;
                     }
                 } else {
                     return;
                 }
             }
         } else {
             // Non, Synonyme désactivé
             // C'est un littéral ?
             if ($t->literal) {
                 // Oui, c'est un littéral
                 // plus rien à faire
             } else {
                 // Non, ce n'est pas un littéral
                 // Nettoyage des caractères
                 $mot_clean = convert_diacrit($t->word);
                 $mot_clean = pmb_alphabetic('^a-z0-9\\s\\*', ' ', pmb_strtolower($mot_clean));
                 // Nettoyage des mots vides
                 $mot_clean_vide = $this->nettoyage_mot_vide($mot_clean);
                 // Combien de mots reste-t-il ?
                 if (count($mot_clean_vide) > 1) {
                     $t->word = "";
                     // Plusieurs mots
                     if (!count($t->sub)) {
                         $op_sub = '';
                     } else {
                         $op_sub = "or";
                     }
                     foreach ($mot_clean_vide as $word) {
                         $terms[] = new term($word, 0, 0, 0, $op_sub, "", $ponderation);
                         $op_sub = "or";
                     }
                     $t->sub = $terms;
                 } elseif (count($mot_clean_vide) == 1) {
                     // Un seul mot
                     $t->word = $mot_clean_vide[0];
                 } else {
                     return;
                 }
             }
         }
     } elseif ($t->sub && !$t->word) {
         // C'est une expression :
         // Vider opérateur
         if (!count($this->tree)) {
             $t->operator = "";
         }
     } else {
         //	Ce n'est ni un mot, ni une exrssion: c'est rien
         return;
     }
     // Inscription dans l'arbre
     $this->tree[] = $t;
     //print "<pre>";print_r($this->tree);print"</pre>";
 }
function strip_empty_chars_thesaurus($string)
{
    // traitement des diacritiques
    $string = convert_diacrit($string);
    // Mis en commentaire : qu'en est-il des caractères non latins ???
    // SUPPRIME DU COMMENTAIRE : ER : 12/05/2004 : ça fait tout merder...
    // RECH_14 : Attention : ici suppression des éventuels "
    //          les " ne sont plus supprimés
    $string = stripslashes($string);
    $string = pmb_alphabetic('^a-z0-9\\s', ' ', pmb_strtolower($string));
    // espaces en début et fin
    $string = pmb_preg_replace('/^\\s+|\\s+$/', '', $string);
    return $string;
}
Exemple #3
0
function strip_empty_words($string, $lg = 0)
{
    // on inclut le tableau des mots-vides pour la langue par defaut si elle n'est pas precisee
    // c'est normalement la langue de catalogage...
    // sinon on inclut le tableau des mots vides pour la langue precisee
    // si apres nettoyage des mots vide la chaine est vide alors on garde la chaine telle quelle (sans les accents)
    global $pmb_indexation_lang;
    //	global $lang;
    global $include_path;
    if (!$lg || $lg == $pmb_indexation_lang) {
        global $empty_word;
    } else {
        include "{$include_path}/marc_tables/{$lg}/empty_words";
    }
    //echo "<pre>";
    //print_r($empty_word);
    //echo "</pre>";
    // nettoyage de l'entree
    // traitement des diacritiques
    $string = convert_diacrit($string);
    // Mis en commentaire : qu'en est-il des caracteres non latins ???
    // SUPPRIME DU COMMENTAIRE : ER : 12/05/2004 : ça fait tout merder...
    // RECH_14 : Attention : ici suppression des eventuels "
    //          les " ne sont plus supprimes
    $string = stripslashes($string);
    $string = pmb_alphabetic('^a-z0-9\\s', ' ', pmb_strtolower($string));
    // remplacement espace  insécable 0xA0:	&nbsp;  	Non-breaking space
    $string = clean_nbsp($string);
    // espaces en debut et fin
    $string = pmb_preg_replace('/^\\s+|\\s+$/', '', $string);
    // espaces en double
    $string = pmb_preg_replace('/\\s+/', ' ', $string);
    $string_avant_mots_vides = $string;
    // suppression des mots vides
    if (is_array($empty_word)) {
        foreach ($empty_word as $dummykey => $word) {
            $word = convert_diacrit($word);
            $string = pmb_preg_replace("/^{$word}\$|^{$word}\\s|\\s{$word}\\s|\\s{$word}\$/i", ' ', $string);
            // RECH_14 : suppression des mots vides colles à des guillemets
            if (pmb_preg_match("/\"{$word}\\s/i", $string)) {
                $string = pmb_preg_replace("/\"{$word}\\s/i", '"', $string);
            }
            if (pmb_preg_match("/\\s{$word}\"/i", $string)) {
                $string = pmb_preg_replace("/\\s{$word}\"/i", '"', $string);
            }
        }
    }
    // re nettoyage des espaces generes
    // espaces en debut et fin
    $string = pmb_preg_replace('/^\\s+|\\s+$/', '', $string);
    // espaces en double
    $string = pmb_preg_replace('/\\s+/', ' ', $string);
    if (!$string) {
        $string = $string_avant_mots_vides;
        // re nettoyage des espaces generes
        // espaces en debut et fin
        $string = pmb_preg_replace('/^\\s+|\\s+$/', '', $string);
        // espaces en double
        $string = pmb_preg_replace('/\\s+/', ' ', $string);
    }
    return $string;
}
Exemple #4
0
 static function gen_table_empty_word()
 {
     //ajout des mots pour remplir  $empty_word[]
     global $empty_word;
     mysql_query("delete from empty_words_calculs");
     $temp = "";
     $rqt_words_created = "select mot from mots,linked_mots where id_mot=num_mot and (type_lien=3 or type_lien=2)";
     $query_words_created = mysql_query($rqt_words_created);
     while ($result_words_created = mysql_fetch_object($query_words_created)) {
         $mot = convert_diacrit($result_words_created->mot);
         $words = pmb_alphabetic('^a-z0-9\\s\\*', ' ', pmb_strtolower($mot));
         $words = explode(" ", $words);
         //Variable de stockage des mots restants après supression des mots vides
         //Pour chaque mot
         for ($i = 0; $i < count($words); $i++) {
             $words[$i] = trim($words[$i]);
             //Vérification que ce n'est pas un mot vide
             if (in_array($words[$i], $empty_word) === false) {
                 //Si ce n'est pas un mot vide, on stoque
                 if ($words[$i]) {
                     $temp .= "\$empty_word[] = \"" . $words[$i] . "\";";
                 }
             }
         }
     }
     if ($temp) {
         //insertion dans la base de la date du jour, du code php et du nombre actuel de notices dans la base
         @mysql_query("insert into empty_words_calculs (date_calcul,php_empty_words,archive_calcul) values ('" . today() . "','" . $temp . "',1)");
     }
 }
         $nberrors++;
     }
     $requete = "SELECT id_empr, empr_login FROM empr WHERE empr_login='******' and id_empr!='{$id}' ";
     $res = pmb_mysql_query($requete, $dbh);
     $nbr_lignes = pmb_mysql_num_rows($res);
     if ($nbr_lignes) {
         $error_message .= "<p>{$form_empr_login} : {$msg['empr_form_login_existant']}</p>";
         $nberrors++;
     }
 } else {
     $form_empr_login = pmb_substr($form_prenom, 0, 1) . $form_nom;
     $form_empr_login = str_replace(CHR(32), "", $form_empr_login);
     $form_empr_login = pmb_strtolower($form_empr_login);
     $form_empr_login = clean_string($form_empr_login);
     $form_empr_login = convert_diacrit(pmb_strtolower($form_empr_login));
     $form_empr_login = pmb_alphabetic('^a-z0-9\\.\\_\\-\\@', '', $form_empr_login);
     $form_empr_login_original = $form_empr_login;
     $pb = 1;
     $num_login = 1;
     while ($pb == 1) {
         $requete = "SELECT empr_login FROM empr WHERE empr_login='******' LIMIT 1 ";
         $res = pmb_mysql_query($requete, $dbh);
         $nbr_lignes = pmb_mysql_num_rows($res);
         if ($nbr_lignes) {
             $form_empr_login = $form_empr_login_original . $num_login;
             $num_login++;
         } else {
             $pb = 0;
         }
     }
 }