127) { $res.= lien_dico_traduction($texte{$i}.$texte{$i+1}); $i = $i + 2; $res.="\n"; // met des espaces entre les carchis } else {$res.= $texte{$i}; $i++; } } return $res; } function lien_dico_traduction($car,$file_name="") { if ($file_name=="") $file_name = "zhendic.php"; return "$car"; } function simplifieXX($html_utf8) { $rsql = requete("SELECT SimplVariant FROM dico_simplifies WHERE Hanzi = '$html_utf8'"); list($sv) = mysql_fetch_array($rsql); $sv = trim($sv); if ($sv) $res.= "[$sv]"; return str_replace("&","§§ET§§",$res); } ?>0) if (!ereg("$livre ?$no",$ref)) continue; if ($livre != "") $ref = ereg_replace(",?$livre $no,?","",$ref); // enlève la ref à la page actuelle $res.= aff_u_note(mysql_mktime($date),$nom,$type,$ref,$texte,$lang); if ($_GET["debug"] == "ok") { $href = "files/Travail.php?action=edite&submit=voir&sql_table=_notes_utilisateurs&sql_col=texte&sql_where=id%3D$id"; $res.= "debug"; } $compte++; if ($compte >= $limite_aff) break; } // BARRE SEPARATEUR $ajout_note = "
".u_lien_ajout_note($livre,$no,$lang)."
"; $ajout_div = "
"; //la div cachée pour insert Ajax if ($livre == "") $ajout_note = ""; // pour la page spéciale user notes return $ajout_note.$ajout_div.$res; } function aff_u_note($date,$nom,$type,$ref,$texte,$lang="en") { if ($nom == "Nom/pseudo" or $nom == "Name/pseudo") $nom = "Anon."; $type = convertir_entites($type); $texte = str_replace("\n","
",$texte); $texte = convertir_entites($texte); foreach (explode(",",$ref) as $une_ref) if (trim($une_ref)!="") $ref_lien.= " – $une_ref"; if ($lang == "fr") $format_date = "d/m/Y"; else $format_date = "Y/m/d"; $infos = "
$nom $ref_lien"; $infos.= " – ".date($format_date,$date); $infos.= "
\n"; //$texte = "
$texte
"; return "
$texte $infos
\n"; } function u_lien_ajout_note($l,$no,$lang="en") { return ''; // removed 20100613 if ($_COOKIE["Visiteur_nom"]) $u_nom = $_COOKIE["Visiteur_nom"]; else $u_nom = L_Nom_pseudo; if ($_COOKIE["Visiteur_email"]) $u_email = $_COOKIE["Visiteur_email"]; else $u_email = L_Email_clef; $u_ref = "$l $no"; $res = "".L_Ajouter_note.""; return $res; } // NETTOYE HTML (tout sauf ) function safeHTML($text) { $text = stripslashes($text); $text = str_replace("
","",$text); $text = strip_tags($text, '
'); $text = ereg_replace ("]+href *= *([^ >]+)[^>]*>", "", $text); $text = ereg_replace ("<([b|i|u|e])[^>]*>", "<\\1>", $text); $text = str_replace("","
",$text); return $text; } function u_notes_Xref($livre,$no) // LES REFERENCES CROISéES DANS LE CORPS DES TEXTES { if ($_GET["debug"] != "ok") return ""; // DESACTIVé if ($livre = "") return ""; $res = ""; $where = " WHERE cacher NOT LIKE 'ok' "; //ne pas afficher les notes cachées $where .= "AND type LIKE '%Xref%' "; $where .= "AND ref LIKE '%$livre $no%' "; $req = "SELECT ref,texte FROM _notes_utilisateurs $where $order"; $reqres = requete($req); while (list($ref,$texte) = mysql_fetch_array($reqres)) { $res.= "

$texte

"; if ($_GET["debug"] == "ok") { $href = "files/Travail.php?action=edite&submit=voir&sql_table=_notes_utilisateurs&sql_col=texte&sql_where=id%3D$id"; $res.= "
debug"; } } return $res; } ?>(.*)", $trad, $trad_co ) ) // $trad = ereg_replace("(.*) *(
)*","",$trad)."
".$trad_co[1].""; if ( ereg("^ *[0-9]", $trad) ) $type = "normal"; // ??? $trad = convertir_entites($trad); // traite les notes inline (entre accolades) $ap_note = 1; while (ereg("^([^{]*)\{([^}]*)\}(.*)$",$trad,$tres)) { $trad = trim($tres[1])."$ap_note $tres[3] $ap_note. $tres[2]"; $ap_note++; } $trad = ereg_replace("\(([0-9]+)\)","\\1",$trad); $trans = array( "" => '', "" => '', "" => '', "" => '', "" => '
', "" => '
' ); $trad = trim(strtr($trad,$trans)); $trad = str_replace("\$PHP_SELF&",$_SERVER['REQUEST_URI']."&",$trad); $trad = str_replace("\$PHP_SELF?",$_SERVER['PHP_SELF']."?",$trad); if (ereg("^ else $res.= "

$trad

"; // REFERENCE // $url_toc = autoURL("s=&c=&no=-1"); // $url_intro = autoURL("s=&c=&no=0"); // $ref.= "".L_Introduction.""; // $ref.= "".L_Table_matieres.""; if ($_GET["debug"] == "ok") { $debug_href = "files/Travail.php?action=edite&submit=voir&sql_table=".$l."_tr&sql_col=texte&sql_where=id%3D$id"; $ref.= " debug"; } if ($nom_traducteur) $nom_traducteur = convertir_entites($nom_traducteur); else $nom_traducteur = $traducteur; $res.= "\n\n

$nom_traducteur $ref

\n\n"; } return $res; } function texte_chinois_brut($l,$no,$type) { $requete = "SELECT * FROM $l WHERE numero = $no "; $resu = mysql_fetch_array( requete( $requete )); $numero = $resu['numero']; $titre = $resu['titre']; $texte_zh = $resu['texte_zh']; $taille = $resu['taille']; if ($_GET["debug"] == "ok") {$debug_href = "files/Travail.php?action=edite&submit=voir&sql_table=$l&sql_col=texte_zh&sql_where=numero%3D$no"; $liens_debug = "$no Deb - "; $debug_href = "files/Travail.php?action=edite&submit=voir&sql_table=$l&sql_col=taille&sql_where=numero%3D$no"; $liens_debug.= " T:$taille"; } $texte_chinois_brut = trim($texte_zh); $titre = trim($titre); $res = "

\n $titre
$texte_chinois_brut \n\n

$liens_debug"; $res.= "\n\n

原文 $no

\n\n"; return $res; // if ($titre=="") $titre=" "; //espace ideographique if (ereg("preformatted",$type)) $texte_chinois_brut = str_replace("\r\n","
",$texte_chinois_brut); if (ereg("coupe_ponctuation",$type)) $texte_chinois_brut = strtr($texte_chinois_brut,$coupe_ponctuation_trans); if (ereg("coupe_virgule",$type)) $texte_chinois_brut = strtr($texte_chinois_brut,$coupe_virgule_trans); if (ereg("vire_ponctuation",$type)) $texte_chinois_brut = strtr($texte_chinois_brut,$vire_ponctuation_trans); if (ereg("mod_ponctuation",$type)) { $texte_chinois_brut = str_replace("
","",$texte_chinois_brut); // PAS SUR QUE CE SOIT BIEN $texte_chinois_brut = strtr($texte_chinois_brut,$mod_ponctuation_trans); $texte_chinois_brut = ereg_replace("^[,.]+","",$texte_chinois_brut); // vire ., au debut $texte_chinois_brut = ereg_replace(", *,*",",",$texte_chinois_brut); // ,,, => , $texte_chinois_brut = ereg_replace("[,.]+\.",".",$texte_chinois_brut); // ,.. => . $texte_chinois_brut = ereg_replace("\.[,.]+",".",$texte_chinois_brut); // ., => . $texte_chinois_brut = str_replace(",",",
",$texte_chinois_brut); $texte_chinois_brut = str_replace(".",".
",$texte_chinois_brut); $mode_affichage = "avec_ponctuation"; } $texte_chinois_brut = ereg_replace("
\n*$","",$texte_chinois_brut);// vire fin if (ereg("(auto_angle[_.,/0-9]*)",$type,$parse)) $taille.= " ".$parse[1]; // propage if (ereg("auto_taille",$type)) $texte_chinois_brut = auto_taille_chinois($texte_chinois_brut,$taille); if (!ereg("pas_de_taille",$type)) $texte_chinois_brut = taille_chinois($texte_chinois_brut,$taille); if (ereg("centre",$taille) and !ereg("force_droite",$taille)) $type = str_replace("vert_droite","vertical",$type); // centrage if (ereg("vertical",$type)) $res = "
".affiche_poeme_vertical($titre,$texte_chinois_brut,$mode_affichage)."
$liens_debug"; elseif (ereg("vert_droite",$type)) $res = "
".affiche_poeme_vertical($titre,$texte_chinois_brut,$mode_affichage)." $liens_debug
"; else { $tab_texte_chinois = split("
",$texte_chinois_brut); $texte_chinois = ""; foreach ($tab_texte_chinois as $ligne) { $texte_chinois.=lien_dico(trim($ligne))."\n
\n"; } $texte_chinois = nettoye_fin($texte_chinois); $res = "

\n\n $texte_chinois \n\n

$liens_debug"; } return $res; } function texte_chinois($l,$no,$type) { $coupe_ponctuation_trans = array( "¡A" => "
", // pour virgule "¡B" => "
", "¡C" => "
", "¡D" => "
", "¡E" => "
", "¡F" => "
", "¡G" => "
", "¡H" => "
", "¡I" => "
", "¡u" => "
", // crochet simple gauche "¡v" => "
", // crochet simple droit "¡y" => "
", // crochet double gauche "¡z" => "
", // crochet double droit "," => "
", // pour virgule 1 "、" => "
", // pour virgule 2 "﹐" => "
", // pour virgule 3 ";" => "
", // pour ; "。" => "
", // pour o "!" => "
", // pour ! "「" => "
", // pour crochet 1 "」" => "
", // pour crochet 2 "『" => "
", // pour crochet double gauche "』" => "
", // pour crochet double droit "?" => "
", // pour ? ":" => "
"); // pour : $coupe_virgule_trans = array( "¡A" => "¡A
", // pour virgule "¡B" => "¡B
", // pour virgule "," => ",
", // pour virgule 1 "、" => "、
", // pour virgule 2 "﹐" => "﹐
", // pour virgule 3 ";" => ";
", // pour ; ":" => ":
"); // pour : $vire_ponctuation_trans = array( "¡A" => "", // pour virgule "¡B" => "", "¡C" => "", "¡D" => "", "¡E" => "", "¡F" => "", "¡G" => "", "¡H" => "", "¡Q" => "", // ; "¡J" => "", // : "﹖" => "", // pour ? "," => "", // pour virgule 1 "、" => "", // pour virgule 2 "﹐" => "", // pour virgule 3 ";" => "", // pour ; "。" => "", // pour o "!" => "", // pour ! "《" => "", // crochet double gauche "》" => "", // crochet double gauche "「" => "", // pour crochet 1 "」" => "", // pour crochet 2 ":" => ""); // pour : $mod_ponctuation_trans = array( "﹖" => ".", // pour ? "?" => ".", // pour ? "‘" => ",", "’" => ".", // pour single quotes "“" => ",", "”" => ".", // pour double quotes "(" => "", ")" => "", // pour ( ) "─" => ".", // pour barre horizontale "," => ",", // pour virgule 1 "、" => ",", // pour virgule 2 "﹐" => ",", // pour virgule 3 ";" => ",", // pour ; "。" => ".", // pour o "!" => ".", // pour ! "《" => "", // crochet double gauche "》" => "", // crochet double gauche "「" => "", "」" => "", // pour crochets simples "『" => "", "』" => "", // pour crochets doubles ":" => "," // pour : ); $requete = "SELECT * FROM $l WHERE numero = $no "; $resu = mysql_fetch_array( requete( $requete )); $numero = $resu['numero']; $titre = $resu['titre']; $texte_zh = $resu['texte_zh']; $taille = $resu['taille']; if ($_GET["debug"] == "ok") {$debug_href = "files/Travail.php?action=edite&submit=voir&sql_table=$l&sql_col=texte_zh&sql_where=numero%3D$no"; $liens_debug = "$no Deb - "; $debug_href = "files/Travail.php?action=edite&submit=voir&sql_table=$l&sql_col=taille&sql_where=numero%3D$no"; $liens_debug.= " T:$taille"; } if (($_GET["debug"] == "ok") and !ereg("auto_taille",$type) and ($l=="Lunyu")) $type="vert_droite mod_ponctuation auto_taille"; //TESTER AUTO TAILLE seulement pour lunyu // VARIANTES if (ereg("comment",$taille)) $type = ""; // si commentaire, aff horizontal + ponctuation $texte_chinois_brut = trim($texte_zh); $titre = trim($titre); // if ($titre=="") $titre=" "; //espace ideographique if (ereg("preformatted",$type)) $texte_chinois_brut = str_replace("\r\n","
",$texte_chinois_brut); if (ereg("coupe_ponctuation",$type)) $texte_chinois_brut = strtr($texte_chinois_brut,$coupe_ponctuation_trans); if (ereg("coupe_virgule",$type)) $texte_chinois_brut = strtr($texte_chinois_brut,$coupe_virgule_trans); if (ereg("vire_ponctuation",$type)) $texte_chinois_brut = strtr($texte_chinois_brut,$vire_ponctuation_trans); if (ereg("mod_ponctuation",$type)) { $texte_chinois_brut = str_replace("
","",$texte_chinois_brut); // PAS SUR QUE CE SOIT BIEN $texte_chinois_brut = strtr($texte_chinois_brut,$mod_ponctuation_trans); $texte_chinois_brut = ereg_replace("^[,.]+","",$texte_chinois_brut); // vire ., au debut $texte_chinois_brut = ereg_replace(", *,*",",",$texte_chinois_brut); // ,,, => , $texte_chinois_brut = ereg_replace("[,.]+\.",".",$texte_chinois_brut); // ,.. => . $texte_chinois_brut = ereg_replace("\.[,.]+",".",$texte_chinois_brut); // ., => . $texte_chinois_brut = str_replace(",",",
",$texte_chinois_brut); $texte_chinois_brut = str_replace(".",".
",$texte_chinois_brut); $mode_affichage = "avec_ponctuation"; } $texte_chinois_brut = ereg_replace("
\n*$","",$texte_chinois_brut);// vire fin if (ereg("(auto_angle[_.,/0-9]*)",$type,$parse)) $taille.= " ".$parse[1]; // propage if (ereg("auto_taille",$type)) $texte_chinois_brut = auto_taille_chinois($texte_chinois_brut,$taille); if (!ereg("pas_de_taille",$type)) $texte_chinois_brut = taille_chinois($texte_chinois_brut,$taille); if (ereg("centre",$taille) and !ereg("force_droite",$taille)) $type = str_replace("vert_droite","vertical",$type); // centrage if (ereg("vertical",$type)) $res = "
".affiche_poeme_vertical($titre,$texte_chinois_brut,$mode_affichage)."
$liens_debug"; elseif (ereg("vert_droite",$type)) $res = "
".affiche_poeme_vertical($titre,$texte_chinois_brut,$mode_affichage)." $liens_debug
"; else { $tab_texte_chinois = split("
",$texte_chinois_brut); $texte_chinois = ""; foreach ($tab_texte_chinois as $ligne) { $texte_chinois.=lien_dico(trim($ligne))."\n
\n"; } $texte_chinois = nettoye_fin($texte_chinois); $res = "

\n\n $texte_chinois \n\n

$liens_debug"; } return $res; } // ne marche que pour les tx encodés avec &xxxx; function taille_chinois($tx,$c) // $c contient la chaine de commande { $c = str_replace(".","_",$c); if (trim($c) == "") return $tx; $c = " $c "; if (ereg("reset",$c)) $tx = str_replace("
","",$tx); $t = explode("&",$tx); $tc = count($t); $coupe_v = 0; if (ereg(" v<=([0-9]{1,2}) ",$c,$r1)) $coupe_v = $r1[1]; if (ereg(" h=([0-9]{1,2}) ",$c,$r2)) if ($r2[1]>0) $coupe_v = ceil($tc / $r2[1]); if (ereg(" v=([0-9_]+) ",$c,$r3)) $t_coupe = explode("_",$r3[1]); $reste = 0; if ($t_coupe) foreach ($t_coupe as $point_coupe) $t[$reste+=$point_coupe].= "
"; if ($coupe_v) for ($i=1;$i<=$tc;$i++) if ($i % $coupe_v == 0) $t[$i].="
"; return implode("&",$t); } // ne marche que pour les tx encodés avec &xxxx; function auto_taille_chinois($tx,& $taille) { $max_hauteur_max = 18; $hauteur_min = 2; $seuil_pour_centrage = 70; $seuil_pour_interdiction_hauteur_trop_courte = 10; $tx = str_replace("
","",$tx); // reset // if ($_GET["debug"] == "ok") echo "$tx
"; $t = explode("&",$tx); $tc = count($t); $hauteur_max = round($tc/2) + 2; if ($tc <= $seuil_pour_interdiction_hauteur_trop_courte) $hauteur_max = $tc; if ($hauteur_max > $max_hauteur_max) $hauteur_max = $max_hauteur_max; //limite hauteur col if ($tc > $seuil_pour_centrage) $taille .= " centre"; if ($tc >= $seuil_pour_interdiction_hauteur_trop_courte) $hauteur_min = 4; // PARSE LA CHAINE $taille pour instructions if (ereg(" auto_v<=([0-9]{1,2}) "," $taille ",$parse)) $hauteur_max = $parse[1]; if (ereg(" auto_v>=([0-9]{1,2}) "," $taille ",$parse)) $hauteur_min = $parse[1]; if (ereg(" auto_v=([0-9]{1,2}) "," $taille ",$parse)) { $hauteur_min = $parse[1]; $hauteur_max = $parse[1]; } $meilleure_note = -100000; $meilleur_res = $tx; for ($hauteur = $hauteur_min; $hauteur <= $hauteur_max; $hauteur++) { if (ereg("coupe_brute",$taille)) $res_t = coupe_rigide($t,$hauteur); else $res_t = coupe_souple($t,$hauteur); $res = implode("&",$res_t); $res = ereg_replace("
\n*$","",$res);// vire fin $note = calcule_note($res,$hauteur,$taille); if ($note>$meilleure_note) { $meilleure_note = $note; $meilleur_res = $res; } } return $meilleur_res; } function coupe_souple($t,$hauteur) { if (count($t)<=$hauteur) return $t; //break recursion $coupe = 1; for ($i=$coupe;$i <= $hauteur; $i++) if (strpos($t[$i],".")) $coupe = $i; for ($i=$coupe;$i <= $hauteur; $i++) if (strpos($t[$i],",")) $coupe = $i; // if (($hauteur>7) and ($coupe_virgule-$coupe <= 3) and ($coupe_virgule>$hauteur/2)) // $coupe_virgule = $coupe; // tente d'eviter les "le maitre a dit" orphelins // $coupe = $coupe_virgule; if ($coupe < 2) $coupe = $hauteur; $t[$coupe].= "
"; $premiere_col = array_splice($t,0,$coupe); $suite = coupe_souple($t,$hauteur); return array_merge($premiere_col,$suite); } function coupe_rigide($t,$hauteur) { if ($hauteur == 0) return $t; $tc = count($t); for ($i=1;$i<=$tc;$i++) if ($i % $hauteur == 0) $t[$i].="
"; return $t; } function calcule_note ($tx,$hauteur,$taille) { $rectangularite_ideale = 7/2; $nb_ideal_colonnes = 2; $poids_pour_ideal_colonnes = 4; $poids_pour_rectangularite = 1; $poids_cases_vides = 3; $poids_coupe_point = 13; $poids_coupe_virgule = 8; $poids_mauvaise_coupe = 15; $penalite_depassement_largeur_14 = 100; if (ereg("centre",$taille)) { $rectangularite_ideale = 4/8; $nb_ideal_colonnes = 10; $poids_mauvaise_coupe = 7; $poids_cases_vides = 2; } if (ereg(" auto_angle_?([.,/0-9]+) "," $taille ",$parse)) $angle_voulu = $parse[1]; if (ereg(" angle_?([.,/0-9]+) "," $taille ",$parse)) $angle_voulu = $parse[1]; $angle_voulu = (float) $angle_voulu; if ($angle_voulu) $rectangularite_ideale = $angle_voulu; $note = 0; $nb_col = substr_count($tx,"
") + 1; $nb_car = substr_count($tx,"&"); if ($nb_car < 10) $nb_ideal_colonnes = 1; if ($nb_col > 14) $note -= $penalite_depassement_largeur_14; if ($nb_col > 14*2) $note -= $penalite_depassement_largeur_14; if ($nb_col > 14*3) $note -= $penalite_depassement_largeur_14; // rectangularité $angle_reel = rad2deg(atan($hauteur / $nb_col)); $angle_ideal = rad2deg(atan($rectangularite_ideale)); $dist = abs($angle_ideal - $angle_reel); $note_rect = - round($poids_pour_rectangularite*$dist,2) ; // nb ideal colonnes $dist = abs($nb_col - $nb_ideal_colonnes); $note_nb_col = - $poids_pour_ideal_colonnes * $dist ; //compte les vides $nb_vides = 0; $t = explode("
",$tx); $tc = count($t); foreach ($t as $i => $col) { if ($i<$tc) $nb_vides += $hauteur - substr_count($col,"&"); else $nb_vides += ($hauteur - substr_count($col,"&"))/2; $debug_cols .= substr_count($col,"&")."."; } $note_vides = $poids_cases_vides * $nb_vides; //compte les bonnes coupures $nb_total_coupes = substr_count($tx,"
"); if ($nb_total_coupes==0) $nb_total_coupes = 1; $tx_coupes_point = substr_count($tx,".
")/$nb_total_coupes; $tx_coupes_virgule = substr_count($tx,",
")/$nb_total_coupes; $tx_mauvaises_coupes = 1 - $tx_coupes_point - $tx_coupes_virgule; $note_coupes = $poids_coupe_point*$tx_coupes_point + $poids_coupe_virgule*$tx_coupes_virgule - $poids_mauvaise_coupe*$tx_mauvaises_coupes; $note_coupes = round($note_coupes,2); if (substr_count($tx,"
")==0) $note_coupes = $poids_coupe_point; // si pas de coupes $note+= $note_rect + $note_coupes - $note_vides; if ($_GET["debug"] == "ok") { echo ""; echo "h$hauteur : (".round($note,2).") "; echo "vides = $poids_cases_vides*$nb_vides ; "; echo "coupes = $note_coupes ($poids_coupe_point*".round($tx_coupes_point,2)." + $poids_coupe_virgule*".round($tx_coupes_virgule,2)." - $poids_mauvaise_coupe*".round($tx_mauvaises_coupes,2)."); "; echo "rect = $note_rect ; "; echo "cols $debug_cols"; echo "
"; } return $note; } function affiche_poeme_vertical($titre,$tx,$mode = "normal") { $tx = ereg_replace("
[ \r\n]*
","
",$tx); // dédoublonne $tx = ereg_replace("
[ \r\n]*$","",$tx); // vire fin if ($tx == "") $tx = "¡@"; // ajoute blanc big5 si vide $lignes_alendroit = explode("
",trim($tx)); $nb_col = count($lignes_alendroit); //echo "XXX $nb_col XXX"; if ($nb_col>14) { $res = affiche_poeme_vertical($titre,implode("
",array_splice($lignes_alendroit,0,$nb_col/2)),$mode); $res.= affiche_poeme_vertical($titre,implode("
",$lignes_alendroit),$mode); return $res; } $lignes = inverse_tableau($lignes_alendroit); $nb_col = count($lignes); if (!$titre) $mod_pas_de_titre = "style='background-color:white'"; $res ="\n"; // PREMIERE LIGNE (decorative) $res.="\n"; $res.="\n"; $res.="\n"; for ($i=2;$i<=$nb_col;$i++) $res.="\n"; if ($titre) $res.=""; $res.=""; $res.=""; // DEUXIEME LIGNE (le texte) $res.="\n"; $res.="\n"; while(list($clef,$ligne) = each($lignes)) $res.="\n"; if (ereg("
",$titre)) // pour aller avec titres du Tangshi mais à modifier (ne prend que le debut { $split_titre = split("
",$titre); $res.= "\n"; } elseif ($titre) $res.= "\n"; $res.= "\n"; $res.= ""; //TROISIEME LIGNE (decorative) $res.="\n"; $res.="\n"; $res.="\n"; for ($i=2;$i<=$nb_col;$i++) $res.="\n"; if ($titre) $res.="\n"; $res.="\n"; $res.="\n"; // FIN TABLEAU $res.= "
".lien_dico($ligne)."".lien_dico($split_titre[2])."".lien_dico($titre)."
\n\n"; $point = ""; $virgule = ""; $res = str_replace("","
",$res); $res = ereg_replace("
[ \n\r\p]*,","$virgule
\n",$res); $res = ereg_replace("
[ \n\r\p]*\.","$point
\n",$res); return $res; } function affiche_poeme___EX___() { //if ($mode != "avec_ponctuationXXXXX") //if ($mode == "avec_ponctuationXXXXX") // { // modifie taille des carchis selon le nombre de colonnes if ( $nb_col<10) $taille = 3; elseif ( $nb_col<17) $taille = 2; elseif ( $nb_col<25) $taille = 1; elseif ( $nb_col>24) $taille = 0; $taille_carchis = 14 + 4*$taille; $taille_colchi = 16 + 6*$taille; $style_taille = "font-size:$taille_carchis px; width:$taille_colchi px; "; if ($mode == "avec_ponctuation") $style_taille = "width:1.1em; nowrap;"; $res =" "; for ($i=2;$i<=$nb_col;$i++) $res.="\n"; $res.=""; $res.=""; $res.=""; while(list($clef,$ligne) = each($lignes)) { $res.=""; } if (ereg("
",$titre)) // pour aller avec titres du Tangshi mais à modifier { $split_titre = split("
",$titre); $res.= ""; } else { $res.= ""; } $res.= " "; for ($i=2;$i<=$nb_col;$i++) $res.= "\n"; $res.= "\n"; $res.= "
"; $res.="
"; // $res.= lien_dico($ligne); $res.= str_replace("","
",lien_dico($ligne)); $res.= "
"; // $res.= lien_dico($split_titre[2]); $res.= str_replace("","
",lien_dico($split_titre[2])); $res.= "
"; // $res.= lien_dico($titre); if ($titre) $titre_lie = lien_dico($titre); else $titre_lie = " "; $res.= str_replace("","
",$titre_lie); $res.= "
 
\n\n"; } ?>".L_Introduction.""; $table.= "".L_Table_matieres.""; $precedent = "".L_Page_precedente.""; $suivant = "".L_Page_suivante.""; // efface les liens redondants // if (ereg("no=0",$param_inf)) $precedent =""; // cas où on est en no=1 (ou s=1 et c=1) // if (ereg("no=-1",$param_inf)) $precedent =""; // cas où on est en no=0 // if (ereg("no=0",$param_sup)) $suivant =""; // cas où on est en no=-1 // if (ereg("no=-1",$param_sup)) $suivant =""; // cas où on est en no=MAX if ($s>0) $scn.= arabe_vers_romain($s).". "; if ($c>0) $scn.= "$c. "; if ($no>0) $scn.= "($no)"; if ($no == 0) $intro= ""; if ($no == -1) $table= ""; // $res = "$intro – $precedent $titre_py $scn $suivant – $table"; $res = "$titre_py $scn $intro$table
$precedent
$suivant"; return $res; } function titre_separateur($l,$s,$c,$no) { if ($s>0) $tx.= arabe_vers_romain($s).". "; if ($c>0) $tx.= "$c. "; if ($no>0 and $c <> $no) $affno = "($no)"; if (!$_GET["no"]) $affno = "$affno"; if (ereg("par_chapitre|par_section",TYPE_AFFICHAGE)) $affno = ""; $res = "$l $tx $affno"; return $res; } function TOC($l,$s,$c,$no,$lang,$param_inf,$param_sup) { // if ($no===0) { $s = 0; $c = 0; } if ($l == "Yijing") return TOC_Yijing($no,$lang); $sql = "SELECT code FROM _code_php WHERE type ='TOC' AND livre = '$l'"; $temp = mysql_fetch_array(requete($sql)); if ($temp[0]) eval ($temp[0]); else { $sql = "SELECT code FROM _code_php WHERE type ='TOC' AND livre = 'defaut'"; $temp = mysql_fetch_array(requete($sql)); if ($temp[0]) eval ($temp[0]); } return $res; } function sous_titre($l,$s,$c,$no,$lang) { if ($no===0) return L_Introduction; $sql = "SELECT code FROM _code_php WHERE type ='sous-titre' AND livre = '$l'"; $temp = mysql_fetch_array(requete($sql)); if ($temp[0]) eval ($temp[0]); else { $sql = "SELECT code FROM _code_php WHERE type ='sous-titre' AND livre = 'defaut'"; $temp = mysql_fetch_array(requete($sql)); if ($temp[0]) eval ($temp[0]); } return $res; } function sous_TOC($l,$titre_py,$s,$c,$no,$param_inf,$param_sup) { $sql = "SELECT code FROM _code_php WHERE type ='sous-TOC' AND livre = '$l'"; $temp = mysql_fetch_array(requete($sql)); if ($temp[0]) eval ($temp[0]); else { $sql = "SELECT code FROM _code_php WHERE type ='sous-TOC' AND livre = 'defaut'"; $temp = mysql_fetch_array(requete($sql)); if ($temp[0]) eval ($temp[0]); } return $res; } function determine_param_inf_et_param_sup ($l,$s,$c,$no,&$param_inf,&$param_sup) { if ($GLOBALS["est_livre"]) { $li = $l; $ls = $l; if (!empty($no) or $GLOBALS["aff_intro_livre"]) // PAGE INTRO ou NO defini { list($no_max) = mysql_fetch_array(requete("SELECT max(numero) FROM $l")); $noi = interieur_segment($no-1,-1,$no_max); $nos = interieur_segment($no+1,-1,$no_max); } elseif (!empty($s) and empty($c)) // seul section est defini { list($s_max) = mysql_fetch_array(requete("SELECT max(section) FROM $l")); $si = $s-1; $ss = $s+1; if ($ss>$s_max) { $ss = ""; $no = 0; } if ($si<1) { $si = ""; $no = 0;} } elseif (!empty($s) and !empty($c)) // section et chapitre definis { list($s_max) = mysql_fetch_array(requete("SELECT max(section) FROM $l")); list($c_max) = mysql_fetch_array(requete("SELECT max(chapitre) FROM $l WHERE section = $s")); $si = $s; $ss = $s; $ci = $c-1; $cs = $c+1; if ($cs>$c_max) { $ss = interieur_segment($ss + 1,1,$s_max); $cs = 1; } if ($ci<1) { $si = interieur_segment($si - 1,1,$s_max); list($ci) = mysql_fetch_array(requete("SELECT max(chapitre) FROM $l WHERE section = $si")); } } } else // cas des pages { $tab_pages = split(",",LISTE_LIENS); $li = $tab_pages[array_search($l,$tab_pages)-1]; $ls = $tab_pages[array_search($l,$tab_pages)+1]; } // EXCEPTIONS if (ereg("par_section",TYPE_AFFICHAGE)) { if ($nos==1) {$nos=""; $ss=1; } if ($noi>1 and $noi==$no_max) {$noi=0;} } if (ereg("par_chapitre",TYPE_AFFICHAGE)) { if ($nos==1) {$nos=""; $ss=1; $cs=1;} if ($noi>1 and $noi==$no_max) {$noi=0;} } $param_inf = "l=$li&s=$si&c=$ci&no=$noi"; $param_sup = "l=$ls&s=$ss&c=$cs&no=$nos"; } function autoURL($param) // génère l'URL en ôtant les var. superflues { if ($param{0} == "#") return ereg_replace("#.*$","",$PHP_SELF).$param; $param = str_replace("&","&",$param); $tab = $_GET; // vire les param non voulus foreach(split(",","x,y,i,force_lang,pub,ch,chmax,tire,u_ref,u_ajout,auteur") as $temp) $tab[$temp] = ""; // efface s et c si no existe if ($tab["no"] != "") { $tab["c"] = ""; $tab["s"] = ""; } // efface les var superflues if ($tab["debug"] != "ok") $tab["debug"] = ""; if ($tab["a"] == "tous") $tab["a"] = ""; $in_tab = explode("#",$param); $param = $in_tab[0]; $ancre = $in_tab[1]; $in_tab = explode("&",$param); foreach ($in_tab as $in_val) { $in_egalite = explode("=",$in_val); $tab[$in_egalite[0]] = $in_egalite[1]; } $param = ""; foreach ($tab as $cle => $val) { if ($val != "") $param .= "&$cle=$val"; } if ($param) $param = "?$param"; if ($ancre) $param .= "#$ancre"; $param = str_replace("?&","?",$param); $param = str_replace("&","&",$param); return $PHP_SELF.$param ; } function illustration_pied($livre,$no,$nb_images_dispo,$offset) { if ($offset == -1) return; $no_img = ($offset+$no) % $nb_images_dispo; $tag = "
".L_Paysage_chinois_sur_plateau." ($no_img)
"; return $tag; } function separateur($texte,$p_inf,$p_sup,&$no_ancre) { global $tab_infos; global $lang,$aff_textes; $no_ancre = $no_ancre+1; $liens['gauche']['param'] = autoURL("$p_inf#a$no_ancre"); $liens['gauche']['titre'] = L_Page_precedente; $liens['haut']['param'] = autoURL("#a".($no_ancre-1)); $liens['haut']['titre'] = L_Haut; $liens['bas']['param'] = autoURL("#a".($no_ancre+1)); $liens['bas']['titre'] = L_Bas; $liens['droite']['param'] = autoURL("$p_sup#a$no_ancre"); $liens['droite']['titre'] = L_Page_suivante; $nav = "
"; $nav.= ""; $nav.= "".$liens["; $nav.= ""; $nav.= ""; $nav.= "".$liens["; $nav.= ""; $nav.= "
"; $nav.= "
"; $nav.= ""; $nav.= "".$liens["; $nav.= ""; $nav.= ""; $nav.= "".$liens["; $nav.= ""; $nav.= "
"; if ($aff_textes and $no_ancre==1) { $tab_nom_textes = explode(",",$tab_infos["textes_$lang"]); // liens si plusieurs textes if (count($tab_nom_textes) >= 2) foreach ($tab_nom_textes as $inc => $nom_texte) if ($inc++>=1) $nav_textes.= "$nom_texte ↓ \n"; } $nav2.= ""; $nav = ""; // efface les fleches de navigation $nav2 = ""; $res = "\n
$nav

$texte

\n"; if ($_GET["debug"]=="ok") $res = "$nav2\n

$texte

\n"; return "\n\n$res\n\n"; } function liens_gauche_droite($liens) { $res.= ""; $res.= "".$liens["; $res.= ""; $res.= ""; $res.= "".$liens["; $res.= ""; return $res; } function titre_fenetre(&$infos,$l,$s,$c,$no,$est_livre,$lang) { $car_separation = "-" ; if ($est_livre) { $res = convertir_entites($infos["titre_$lang"])." $car_separation "; $res.= $infos['titre_py']; if ($s==0) $res.= ""; else $res.= " ".arabe_vers_romain($s); if ($c==0) $res.= ""; else $res.= ". $c."; if (($no==0) or (ereg("chapitre=numero",TYPE_AFFICHAGE))) $res.= ""; else $res.= " ($no)"; } else { if ($l == "intro") $res = "Wengu $car_separation ".($lang=="fr" ? "Classiques chinois" : "Chinese Classics"); else $res = $infos['titre_py']." $car_separation ".$infos["titre_$lang"]; if ($l == "rech") $res.= " (".$_GET["ch"].")"; } $res = str_replace("-1",L_table,$res); if ($l == "Yijing") { $res = str_replace(" I "," ",$res); $res = str_replace("(","",$res); $res = str_replace(")","",$res); } return $res; } function titre_livre(&$tab_infos,$lang,$l,$no) { $titre_livre = "".lien_dico($tab_infos['titre_zh']).""; $titre_livre.= $tab_infos['titre_py']; // CAS PAS LIVRE if (!$GLOBALS["est_livre"]) { $url_intro = autoURL("l=intro&s=&c=&no="); $url_TOC = autoURL("l=intro&s=&c=&no=-1"); } // CAS PAS INTRO DE LIVRE elseif (!$GLOBALS["aff_intro_livre"]) { $url_intro = autoURL("&l=$l&no=0&s=&c="); if ($no != -1) $url_TOC = autoURL("&l=$l&no=-1&s=&c="); } // CAS INTRO DE LIVRE else $url_TOC = autoURL("&l=$l&no=-1&s=&c="); if ($l == "intro" and $no != -1) $url_intro = ""; // vire logo sur intro if ($l == "intro" and $no == -1) $url_TOC = ""; // vire logo sur intro if ($url_intro) $titre_livre.= " ".L_Introduction.""; if ($url_TOC) $titre_livre.=" ".L_Table_matieres." "; if ($tab_infos["titre_$lang"]) { $titre_livre.= " –"; $titre_livre.= " ".convertir_entites($tab_infos["titre_$lang"]); } return $titre_livre; } // ====================== // TRAITEMENTS DE CHAINES // ====================== define('NOMBRES_CHINOIS','一,二,三,四,五,六,七,八,九,十'); define('PONCTUATION_CHINOISE','﹖,,,、,﹐,;,。,!,「,」,」,」,:'); //for ($i = 12250; $i <12420; $i++) echo "$i --- &#$i;
"; // chiffres //for ($i = 65100; $i <65130; $i++) echo "$i --- &#$i;
"; // chiffres //for ($i = 8200; $i <8300; $i++) echo "$i --- &#$i;
"; function nettoye_fin($tx) { $tx = ereg_replace("(
| |\r|\n)*$","",$tx); return $tx; } function enleve_ponctuation_chinoise($in_texte) { $ponct_chinoise = explode(",",PONCTUATION_CHINOISE); foreach($ponct_chinoise as $car) { $in_texte = str_replace($car,"",$in_texte); } return ($in_texte); } function un_htmlentities($string) { $trans_tbl = get_html_translation_table (HTML_ENTITIES); $trans_tbl = array_flip($trans_tbl); return strtr($string, $trans_tbl); } // fonction convertir les caractères spéciaux function convertir_entites($in_texte) { $out_texte = ""; $in_texte = trim($in_texte); //$in_texte = ereg_replace("&","&",$in_texte); $in_texte = str_replace("\$PHP_SELF&",$_SERVER['REQUEST_URI']."&",$in_texte); $in_texte = str_replace("\$PHP_SELF?",$_SERVER['PHP_SELF']."?",$in_texte); $longueur = strlen($in_texte); for ($i = 0 ; $i < $longueur ; $i++) { if (ord($in_texte[$i]) >127) $out_texte .= "&#".ord($in_texte[$i]).";"; //elseif (ord($in_texte[$i]) == 13) $out_texte .= "
"; else $out_texte .= $in_texte[$i]; } // autres corrections $correction = array( //"’" => "'", //"“" => '"', //"”" => '"' , "---" => "—", "--" => "–", "‘" => "'", // "‘", "’" => "'", // "’", "“" => '“', "”" => '”' , "œ" => 'œ' , "« "=>"« ", // « " »"=>" »", // » " ?"=>" ?", " ;"=>" ;", " :"=>" :", " !"=>" !", "
"=>"
\n"); $out_texte = strtr($out_texte,$correction); $out_texte = ereg_replace("(
\n)+$","",$out_texte); // pour nettoyer la fin return $out_texte; } function arabe_vers_romain ( $nombre ) { if ( ! $nombre || $nombre > 3999 ) return ""; if ($nombre<0) return $nombre; if ($nombre>0) return arabe_vers_romain_interne ($nombre); } function arabe_vers_romain_interne ( $nombre ) { if ( ! $nombre || $nombre > 3999 ) return ""; $symbole = array("I","V","X","L","C","D","M","M"); $longueur = strlen( $nombre ); $chiffre = (int)( $nombre / pow(10,$longueur-1) ); $chaine = ""; if ( $chiffre ) {if ( $chiffre > 5 ) {if ( $chiffre < 9 ) {$chaine .= $symbole[ ($longueur-1)*2+1 ]; for ( $i=1 ; $i<=($chiffre%5) ; $i++ ) $chaine .= $symbole[ ($longueur-1)*2 ]; } else $chaine .= $symbole[ ($longueur-1)*2 ].$symbole[ ($longueur)*2 ]; } else { if ( $chiffre < 4 ) {for ($i=1; $i<=$chiffre; $i++) $chaine .= $symbole[ ($longueur-1)*2 ]; } else $chaine .= ($chiffre%5 ? $symbole[($longueur-1)*2] : "").$symbole[($longueur-1)*2+1]; } } return $chaine.arabe_vers_romain_interne( $nombre - $chiffre*pow(10,$longueur-1) ); } // ================== // TRAITEMENTS DIVERS // ================== function interieur_segment($n,$ni,$ns) { if ($n < $ni) $n = $ns; if ($n > $ns) $n = $ni; return $n; } function inverse_tableau($in_array) { $size = count($in_array); end($in_array); for ($i=0; $i<$size; ++$i) { $key = key($in_array); $out_array[$key] = $in_array[$key]; prev($in_array); } return $out_array; } function mysql_mktime($timestamp){ $hour = substr($timestamp, 8, 2); $minute = substr($timestamp, 10, 2); $second = substr($timestamp, 12, 2); $month = substr($timestamp, 4, 2); $day = substr($timestamp, 6, 2); $year = substr($timestamp, 0, 4); return mktime($hour, $minute, $second, $month, $day, $year); } function affiche_tableau_select($resu) { $nbcol = mysql_num_fields($resu); $compte = 0; $tx = ""; for ($i=0;$i<$nbcol;$i++) { $tx.= ""; } while ($res = mysql_fetch_array($resu)) { $compte++; $tx.= ""; for ($i=0;$i<$nbcol;$i++) { //$tx.= ""; $tx.= "\n"; } $tx.= ""; } $tx.= "
".mysql_field_name($resu,$i)."
".$res[$i]."".substr($res[$i],0,300)."
"; $tx.= "contient $compte ligne(s)
\n"; return $tx; } ?>incipit
'); define('L_Table_generale', 'Table des matières'); define('L_Table_genres', 'Table par genres'); define('L_Table_auteurs', 'Table par auteurs'); define('L_Extraits_aleatoires', 'Extraits aléatoires'); define('L_Rechercher', 'Rechercher'); define('L_Changer', 'Changer'); define('L_Moteur_interne', 'Moteur interne'); define('L_Pas_de_pubs', 'Pas de publicités'); // divers define('L_Paysage_chinois_sur_plateau','Paysage chinois sur plateau'); define('L_Pas_trouve','Absent du dictionnaire'); define('L_lunyu_Liens_sections','(Choisir une section et les chapitres apparaîtront ici)'); // notes utilisateurs define('L_Ajouter_note', 'Ajouter une note'); define('L_Notes_et_illustration','Notes & illustration'); define('L_notes_sur_cette_page','notes sur cette page'); define('L_une_note_sur_cette_page','Une note sur cette page'); define('L_Aucune_note_sur_cette_page','Aucune note sur cette page'); define('L_Notes', 'Notes'); define('L_Note_de', 'Note de'); define('L_Commentaires', 'Commentaires'); define('L_Nom_pseudo', 'Nom/pseudo'); define('L_Email_clef', 'e-mail/clef'); define('L_Ajouter', 'Ajouter'); define('L_Ajout_note', 'Ajout d\'une note'); define('L_Commentaire', 'Commentaire'); define('L_Traduction', 'Traduction'); define('L_Reponse', 'Réponse'); define('L_Bogue', 'Bogue'); define('L_A_propos_du_site', 'À propos du site'); define('L_Autre_note', 'Autre note'); define('L_Envoyer', 'Envoyer la note'); define('L_Voir_modifications', 'Voir la modification'); define('L_Vous_pouvez_modifier','Vous pouvez modifier votre note'); define('L_Votre_note', 'Votre note'); define('L_Verification', 'Vérifier'); define('L_Insertion', 'Insertion'); define('L_Notes_utilisateurs', 'Notes utilisateurs'); define('L_Modification', 'Modification'); define('L_Type_note', 'Type de note'); define('L_Reference', 'Référence'); define('L_Langue', 'Langue'); define('L_Votre_note_est_enregistree', 'Votre note est bien enregistrée (rechargez la page pour vérifier)'); define('L_Revenir_a_la_page_annotee', 'Revenir à la page annotée'); define('L_retour', 'retour'); define('L_avec', 'avec'); define('L_sur_ce_site', 'sur ce site'); define('L_sur_le_web', 'sur le web'); define('L_AIDE_notes', '"E-mail/clef" sert comme un mot de passe, il ne sera pas affiché sur le site. On peut utiliser les balises <i>, <b>, <u>, et <a> ; et la chaîne $PHP_SELF pour les liens internes (ex. : <a href="$PHP_SELF?l=Lunyu&no=2">lien</a> pointe sur le deuxième chapitre des Entretiens).'); define('L_Annuler', 'Annuler'); define('L_dernieres_notes', 'dernières notes'); // recherche define('L_Chercher', 'Chercher'); define('L_dans', 'dans'); define('L_Tous', 'Tous'); define('L_tous', 'tous'); define('L_resultat_trouve_dans', 'résultat trouvé dans le'); define('L_resultats_trouves_dans', 'résultats trouvés dans le'); define('L_Aucuns_resultats_trouves_dans', 'Aucun résultat trouvé dans le'); define('L_ou_plus', 'ou plus'); define('L_Attention', 'Attention !'); define('L_la_chaine', 'la chaîne'); define('L_est_trop_courte', 'est trop courte'); // pied de page define('L_table', 'table'); define('L_la_suite', 'La suite...'); define('L_Contact', 'Contact'); define('L_Haut_de_page', 'Haut de page'); define('L_Chinois', 'Chinois'); define('L_oui', 'on'); define('L_non', 'off'); define('L_Ne_pas_afficher_caracteres', 'Ne pas afficher les caractères chinois'); define('L_Afficher_caracteres', 'Afficher les caractères chinois'); // tables define('L_Versions', 'Versions'); define('L_pages', 'pages'); // Yijing define("L_Trigrammes","Trigrammes"); define("L_Hexagrammes","Hexagrammes"); define("L_courant","courant"); define("L_binome","binôme"); define("L_precedent","précédent"); define("L_suivant","suivant"); define("L_echange_trig","échange trig."); define("L_oppose","opposé"); define("L_tetenbas","tête en bas"); define("L_maitre_gouvernant","maître gouvernant"); define("L_maitre_constituant","'' constituant "); define("L_traits_ciel","Les deux traits du ciel"); define("L_traits_homme","Les deux traits de l'homme"); define("L_traits_terre","Les deux traits de la terre"); define("L_Tire","Tire"); define("L_RAZ","RAZ"); define("L_Au_hasard","Au hasard"); define("L_Commencer_par_le_bas_","Commencer par le bas !"); define("L_Pas_de_mutation","Pas de mutation, l'hexagramme est statique"); ?>