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; }
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: 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; }
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; } } }