';
// if ($lem==$eclats[0]) return $toto;
if ($lem == $eclats[0]) {
// return $milieu;
// Je suis arrivé sur le bon mot par hasard :
// je dois vérifier que je suis sur le premier homonyme
$recule = 100;
// En moyenne : 20 par entrée dans ind_gr_ana.csv et 65 dans index_com.csv
while ($lem == $eclats[0]) {
fseek($f_index, $milieu - $recule);
$toto = fgets($f_index);
// Je remonte dans le fichier
$milieu = ftell($f_index);
$toto = fgets($f_index);
$eclats = explode(':', $toto);
$recule = 2 * $recule;
// Je double le pas en arrière à chaque tentative infructueuse.
} // Quand je sors, je sais que $lem>$eclats[0]
} else if ($fin - $milieu > 100) {
if ($lem > $eclats[0])
return cherche($lem, $milieu, $fin);
else
return cherche($lem, $deb, $milieu);
}
// else est inutile
if ($lem < $eclats[0])
fseek($f_index, $deb);
// Le lemme recherché est entre $deb et $milieu
// $deb est toujours au début d'une ligne
$milieu = ftell($f_index);
$toto = fgets($f_index);
$eclats = explode(':', $toto);
while ($lem > $eclats[0] && !feof($f_index)) {
$milieu = ftell($f_index);
$toto = fgets($f_index);
$eclats = explode(':', $toto);
}
return $milieu;
// Maintenant, la fonction retourne le position dans l'index
// return $toto;
}
function latin2greek($mot) {
if (strrpos($mot, 's') == (strlen($mot) - 1) && strlen($mot) != 1)
$mot = substr($mot, 0, strlen($mot) - 1) . 'ς';
$lat = array('a', 'b', 'g', 'd', 'e', 'z', 'h', 'q', 'i', 'k', 'l', 'm', 'n', 'c', 'o', 'p', 'r', 's', 't', 'u', 'f', 'x', 'y', 'w', 'v');
$grec = array('α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϝ');
return str_ireplace($lat, $grec, $mot);
}
function greek2latin($mot) {
$lat = array('a', 'b', 'g', 'd', 'e', 'z', 'h', 'q', 'i', 'k', 'l', 'm', 'n', 'c', 'o', 'p', 'r', 's', 't', 'u', 'f', 'x', 'y', 'w', 's');
$grec = array('α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ς');
return str_replace($grec, $lat, $mot);
}
function nettoie($mot) {
$lettres = array('̀', '́', '̂', '̃', '̅', '̆', '̈', '̓', '̔', '̀', '́', '͂', '̈́', 'ͅ', '᾽', '᾿', '῍', '῎', '῏', '῝', '῞', '῟', '῭', '΅', '`', '´', '῾');
$mot = str_replace($lettres, '', $mot);
// suppression des combining trucs
$lettres = array('ά', 'ἀ', 'ἁ', 'ὰ', 'ά', 'ὰ', 'ᾰ', 'ᾱ', 'ᾶ', 'ᾳ', 'ἂ', 'ἃ', 'ἄ', 'ἅ', 'ἆ', 'ἇ', 'ᾲ', 'ᾴ', 'ᾷ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ');
$mot = str_replace($lettres, 'α', $mot);
$lettres = array('Ά', 'Ἀ', 'Ἁ', 'Ὰ', 'Ᾰ', 'Ᾱ', 'ᾼ', 'Ἂ', 'Ἃ', 'Ἄ', 'Ἅ', 'Ἆ', 'Ἇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 'ᾍ', 'ᾎ', 'ᾏ');
$mot = str_replace($lettres, 'α', $mot);
$lettres = array('Έ', 'Ἐ', 'Ἑ', 'Ὲ', 'Ἒ', 'Ἓ', 'Ἔ', 'Ἕ');
$mot = str_replace($lettres, 'ε', $mot);
$lettres = array('ὲ', 'έ', 'έ', 'ἐ', 'ἑ', 'ὲ', 'ἒ', 'ἓ', 'ἔ', 'ἕ');
$mot = str_replace($lettres, 'ε', $mot);
$lettres = array('Ή', 'Ἠ', 'Ἡ', 'Ὴ', 'ῌ', 'Ἢ', 'Ἣ', 'Ἤ', 'Ἥ', 'Ἦ', 'Ἧ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ');
$mot = str_replace($lettres, 'η', $mot);
$lettres = array('ὴ', 'ή', 'ή', 'ἠ', 'ἡ', 'ὴ', 'ῆ', 'ῃ', 'ἢ', 'ἣ', 'ἤ', 'ἥ', 'ἦ', 'ἧ', 'ᾐ', 'ᾑ', 'ῂ', 'ῄ', 'ῇ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ');
$mot = str_replace($lettres, 'η', $mot);
$lettres = array('Ί', 'Ἰ', 'Ἱ', 'Ὶ', 'Ῐ', 'Ῑ', 'Ϊ', 'Ἲ', 'Ἳ', 'Ἴ', 'Ἵ', 'Ἶ', 'Ἷ');
$mot = str_replace($lettres, 'ι', $mot);
$lettres = array('ὶ', 'ί', 'ί', 'ἰ', 'ἱ', 'ὶ', 'ῐ', 'ῑ', 'ῖ', 'ϊ', 'ΐ', 'ἲ', 'ἳ', 'ἴ', 'ἵ', 'ἶ', 'ἷ', 'ῒ', 'ΐ', 'ΐ');
$mot = str_replace($lettres, 'ι', $mot);
$lettres = array('Ό', 'Ὀ', 'Ὁ', 'Ὸ', 'Ὂ', 'Ὃ', 'Ὄ', 'Ὅ');
$mot = str_replace($lettres, 'ο', $mot);
$lettres = array('ὸ', 'ό', 'ό', 'ὀ', 'ὁ', 'ὸ', 'ὂ', 'ὃ', 'ὄ', 'ὅ');
$mot = str_replace($lettres, 'ο', $mot);
$lettres = array('Ῥ', 'ῤ', 'ῥ');
$mot = str_replace($lettres, 'ρ', $mot);
$lettres = array('Ύ', 'Ϋ', 'Ὑ', 'Ὺ', 'Ῠ', 'Ῡ', 'Ὓ', 'Ὕ', 'Ὗ');
$mot = str_replace($lettres, 'υ', $mot);
$lettres = array('ὺ', 'ύ', 'ύ', 'ὐ', 'ὑ', 'ὺ', 'ῠ', 'ῡ', 'ῦ', 'ϋ', 'ΰ', 'ὒ', 'ὓ', 'ὔ', 'ὕ', 'ὖ', 'ὗ', 'ῢ', 'ΰ', 'ῧ', 'ΰ');
$mot = str_replace($lettres, 'υ', $mot);
$lettres = array('Ώ', 'Ὠ', 'Ὡ', 'Ὼ', 'ῼ', 'Ὢ', 'Ὣ', 'Ὤ', 'Ὥ', 'Ὦ', 'Ὧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 'ᾮ', 'ᾯ');
$mot = str_ireplace($lettres, 'ω', $mot);
$lettres = array('ὼ', 'ώ', 'ώ', 'ώ', 'ὠ', 'ὡ', 'ὼ', 'ῶ', 'ῳ', 'ὢ', 'ὣ', 'ὤ', 'ὥ', 'ὦ', 'ὧ', 'ᾠ', 'ᾡ', 'ῲ', 'ῴ', 'ῷ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ');
$mot = str_replace($lettres, 'ω', $mot);
$lettres = array('Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω');
$grec = array('α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω');
$mot = str_replace($lettres, $grec, $mot);
// Ajout pour remplacer un éventuel σ en fin de mot par un ς
if (strrpos($mot, 'σ') == (strlen($mot) - 2) && strlen($mot) != 1)
$mot = substr($mot, 0, strlen($mot) - 2) . 'ς';
return $mot;
}
function liste_pos($article, $find, $liste) {
$decal = strlen($find);
$ii = strpos($article, $find) + $decal;
$iii = array_push($liste, $ii);
while (strpos($article, $find, $ii) > 0) {
$ii = strpos($article, $find, $ii) + $decal;
$iii = array_push($liste, $ii);
}
return $liste;
}
/****************************************************************
** fin des fonctions **
****************************************************************/
/**********************************************************
** Initialisation **
**********************************************************/
/* if (isset($_SESSION['betacode']))
{
$betacode=$_SESSION['betacode']);
$unicode=$_SESSION['unicode']);
}
else
{
*/$file = fopen("data/betunicode_gr.csv", "r");
$x = 0;
while (!feof($file)) {
$ligne = fgets($file);
if (!strpos($ligne, "!")) {
$eclats = explode(chr(9), $ligne);
$betacode[$x] = $eclats[0];
$unicode[$x] = $eclats[2];
$x = $x + 1;
}
}
fclose($file);
// $_SESSION['betacode'])=$betacode;
// $_SESSION['unicode'])=$unicode;
// }
/*if (!isset($_SESSION['en_colonne']))
$_SESSION['en_colonne'] = true;*/
if (!isset($_SESSION['dicos']))
$_SESSION['dicos'] = "les trois dicos";
// Par défaut, on affiche les trois dicos.
if (isset($_POST['dicos']))
$_SESSION['dicos'] = $_POST['dicos'];
// Un choix a été fait par l'utilisateur : on le conserve.
$dicos = $_SESSION['dicos'];
if (!isset($_SESSION['grec']))
$_SESSION['grec'] = "";
if (isset($_POST['grec']))
$_SESSION['grec'] = $_POST['grec'];
$grec = $_SESSION['grec'];
// J'ajoute la possibilité de lemmatiser un texte
$consultation = true;
if (isset($_POST['lemmatisation']))
$consultation = false;
/* {
if ($_POST['consultation']=="false") $consultation=false;
}
*/
if (!isset($_SESSION['exacte']))
$_SESSION['exacte'] = false;
$f_exacte = $_SESSION['exacte'];
$pos_ind = -1;
//if (isset($_GET['pos_ind']))
// $pos_ind = $_GET["pos_ind"];
if (isset($_POST['pos_ind']))
$pos_ind = $_POST["pos_ind"];
// On arrive ici avec un lien direct qui dit où chercher dans l'index
elseif (isset($_POST['lemme']))
$lemme = trim($_POST["lemme"]);
// On arrive ici avec la soumission d'un lemme dans la fenêtre
elseif (isset($_GET['lemme']))
$lemme = trim($_GET["lemme"]);
// On arrive ici avec la soumission d'un lemme via un lien
else
$lemme = 'a';
// La première fois.
/*********************************************
** Traitement **
*********************************************/
$lsj_tot = '';
$pape_tot = '';
$bailly_tot = '';
// if ($pos_ind==-1 && $lemme=='')
if (!$consultation) {
/*********
** J'ai un texte à traiter
************/
if (isset($_POST['exacte']))
$_SESSION['exacte'] = true;
else
$_SESSION['exacte'] = false;
// La checkbox n'existe que si elle est validée
$f_exacte = $_SESSION['exacte'];
$mots = explode(" ", $grec);
// $lemmata = $mots;
$ponct = array('"', ",", ";", ":", ".", "?", chr(13), chr(10));
$betasignes = array("(", ")", "\\", "/", "=", "+", "|", "_", "^", "*", "1", "2", "3", "4", "5");
$f_index = fopen("data/ind_gr_ana.csv", "r");
$file = fopen("data/greek-analyses.txt", "r");
for ($x = 0; $x < count($mots); $x++) {
$forme[$x] = "";
$titre[$x] = "";
if ($mots[$x] != "") {
$mot_txt = str_replace($ponct, "", $mots[$x]);
// Je garde le mot courant avec ses décorations
$mot = greek2latin(nettoie($mot_txt));
$mot_beta = str_replace($unicode, $betacode, $mot_txt);
$toto = cherche($mot, 0, filesize("data/ind_gr_ana.csv"));
fseek($f_index, $toto);
// Dans le cas d'homonymes, je pointe sur le premier.
$titi = fgets($f_index);
$eclats = explode(":", $titi);
$reference = $eclats[0];
if ($mot != $eclats[0]) {
$forme[$x] = "Non trouvé";
$titre[$x] = "Non trouvé";
} else {
$l_formes = [];
$nn_f = 0;
while ($mot == $eclats[0]) {
fseek($file, $eclats[1]);
$l_mot = explode("{", fgets($file));
$mot_tr = $l_mot[0];
$mot_tr = substr($mot_tr, 0, strlen($mot_tr) - 1);
// supprime le Tab.
$mot_tr2 = $mot_tr;
// Je garde le betacode
if (strrpos($mot_tr, 's') == (strlen($mot_tr) - 1) && strlen($mot_tr) != 1)
$mot_tr = substr($mot_tr, 0, strlen($mot_tr) - 1) . 'ς';
$mot_tr = str_replace($betacode, $unicode, $mot_tr);
if ($mot_beta == $mot_tr2)
$l_formes[$nn_f] = "" . $mot_tr . "";
// $forme[$x] .= "" . $mot_tr . "";
else
$l_formes[$nn_f] = $mot_tr;
// $forme[$x] .= $mot_tr;
// Quand la forme trouvée coïncide exactement avec celle cherchée, je la mets en rouge gras.
$bb = [];
$cc = [];
for ($aa = 1; $aa < count($l_mot); $aa++) {
$ecl = explode(chr(9), $l_mot[$aa]);
// des Tab séparent la forme, la traduction et l'analyse morphologique
$txt = explode(" ", $ecl[0]);
// Pour l'instant dans le 1er champ, j'ai deux nombres avant la forme
$eclat = explode(",", $txt[2]);
// Dans certains cas, le champ "lemme" est composé de deux mots.
$lem = str_replace($betasignes, "", $eclat[count($eclat) - 1]);
// $tutu = "";
$tutu = "";
for ($i = 0; $i < count($eclat); $i++) {
$mot_t = $eclat[$i];
// Pour le sigma final, chaque mot doit être traité séparément
if (strrpos($mot_t, 's') == (strlen($mot_t) - 1) && strlen($mot_t) != 1)
$mot_t = substr($mot_t, 0, strlen($mot_t) - 1) . 'ς';
$eclat[$i] = str_replace($betacode, $unicode, $mot_t);
}
$titi = implode(", ", $eclat);
$eclat[count($eclat) - 1] = $tutu . $eclat[count($eclat) - 1] . "";
$tutu = implode(", ", $eclat);
$ec = explode("}", $ecl[2]);
// Je supprime ce qui pourrait suivre l'accolade fermante
$bb[$aa - 1] = $mot_tr . " : " . $titi . " " . $ecl[1] . " " . $ec[0];
// lemme traduction analyse :
// le lemme peut redonner la forme avec quantités
$cc[$aa - 1] = $tutu . " " . $ecl[1] . " " . $ec[0];
}
$titre[$x] .= implode("
", $bb) . "\n";
// pour la bulle d'aide
$l_formes[$nn_f] = $l_formes[$nn_f]."
- " . implode("
\n- ", $cc) . "
\n";
$nn_f += 1;
// pour la lemmatisation
$titi = fgets($f_index);
$eclats = explode(":", $titi);
}
sort($l_formes);
// Met les formes exactes au début
if ($f_exacte && strpos($l_formes[0], "color:red") > 0) {
$jjj = 0;
$forme[$x] = "";
while (strpos($l_formes[$jjj], "color:red") > 0) {
$forme[$x] .= $l_formes[$jjj];
$jjj += 1;
}
} else
$forme[$x] = implode("", $l_formes);
}
}
}
fclose($f_index);
fclose($file);
} else if (isset($_POST["flexion"])) {
/*****************
** J'ai un lemme à fléchir
****************/
$tableau = "";
$betasignes = array("(", ")", "\\", "/", "=", "+", "|", "_", "^", "*", "1", "2", "3", "4", "5");
// Un tableau de valeurs
$valeur["nom"] = 1;
$valeur["voc"] = 2;
$valeur["acc"] = 4;
$valeur["gen"] = 8;
$valeur["dat"] = 16;
$valeur["masc"] = 32;
$valeur["fem"] = 64;
$valeur["neut"] = 128;
$valeur["sg"] = 256;
$valeur["dual"] = 512;
$valeur["pl"] = 1024;
$valeur["comp"] = 2048;
$valeur["superl"] = 4096;
// Verbes
$valeur["1st"] = 1;
$valeur["2nd"] = 2;
$valeur["3rd"] = 4;
// temps
$valeur["pres"] = 2048;
$valeur["imperf"] = 4096;
$valeur["perf"] = 6144;
$valeur["plup"] = 8192;
$valeur["fut"] = 10240;
$valeur["futperf"] = 12288;
$valeur["aor"] = 14336;
// modes
$valeur["ind"] = 16384;
$valeur["subj"] = 32768;
$valeur["imperat"] = 49152;
$valeur["inf"] = 65536;
$valeur["opt"] = 81920;
$valeur["part"] = 98304;
// Voix
$valeur["act"] = 131072;
$valeur["mid"] = 262144;
$valeur["mp"] = 393216;
$valeur["pass"] = 524288;
$valeur["a_priv"] = 0;
$valeur["adverbial"] = 0;
$valeur["aeolic"] = 0;
$valeur["attic"] = 0;
$valeur["contr"] = 0;
$valeur["doric"] = 0;
$valeur["enclitic"] = 0;
$valeur["epic"] = 0;
$valeur["geog_name"] = 0;
$valeur["indeclform"] = 0;
$valeur["ionic"] = 0;
$valeur["iota_intens"] = 0;
$valeur["irreg_comp"] = 0;
$valeur["irreg_superl"] = 0;
$valeur["nu_movable"] = 0;
$valeur["particle"] = 0;
$valeur["poetic"] = 0;
$valeur["proclitic"] = 0;
$f_index = fopen("data/ind_gr_lem.csv", "r");
$file = fopen("data/greek-lemmata.txt", "r");
$mot_beta = str_replace($unicode, $betacode, $lemme);
//$mot = str_replace($betasignes, "", $mot_beta);
$mot = strtolower(str_replace($betasignes, "", $mot_beta));
$toto = cherche($mot, 0, filesize("data/ind_gr_lem.csv"));
fseek($f_index, $toto);
// Dans le cas d'homonymes, je pointe sur le premier.
$titi = fgets($f_index);
$eclats = explode(":", $titi);
if ($mot != $eclats[0]) {
$tableau = $lemme . " : Non trouvé";
}
while ($mot == $eclats[0]) {
fseek($file, $eclats[1]);
$ligne = trim(fgets($file));
$liste = explode(chr(9), $ligne);
$mot_t = $liste[0];
if (strrpos($mot_t, 's') == (strlen($mot_t) - 1) && strlen($mot_t) != 1)
$mot_t = substr($mot_t, 0, strlen($mot_t) - 1) . 'ς';
$lem = str_replace($betacode, $unicode, $mot_t);
$tableau .= "" . $lem . "\n";
$jj = 0;
for ($i = 2; $i < count($liste); $i++) {
$element = substr($liste[$i], 0, strlen($liste[$i]) - 1);
// Supprime la dernière ")"
$eclats = explode(") (", $element);
$mot_t = substr($eclats[0], 0, strpos($eclats[0], " ("));
// Pour le sigma final, chaque mot doit être traité séparément
if (strrpos($mot_t, 's') == (strlen($mot_t) - 1) && strlen($mot_t) != 1)
$mot_t = substr($mot_t, 0, strlen($mot_t) - 1) . 'ς';
$forme = str_replace($betacode, $unicode, $mot_t);
$eclats[0] = substr($eclats[0], strpos($eclats[0], " (") + 2, strlen($eclats[0]));
for ($j = 0; $j < count($eclats); $j++) {
$ana_morph = $eclats[$j];
$detail = "";
if (strpos($ana_morph, " (") > 0) {
$detail = substr($ana_morph, strpos($ana_morph, " ("), strlen($ana_morph));
$ana_morph = substr($ana_morph, 0, strpos($ana_morph, " ("));
}
$total = 1000000;
$ecl = explode(" ", $ana_morph);
for ($k = 0; $k < count($ecl); $k++) {
$ec = explode("/", $ecl[$k]);
$total += $valeur[$ec[0]];
// for ($jjj=0;$jjj" . $ana_morph . " : " . $forme . "" . $detail . "";
$jj += 1;
}
}
sort($tutu);
$sousListe = false;
for ($jj = 0; $jj < count($tutu) - 1; $jj++) {
$total = substr($tutu[$jj], 0, strpos($tutu[$jj], " : "));
if ($total == substr($tutu[$jj + 1], 0, strpos($tutu[$jj + 1], " : "))) {
$tutu[$jj] = "- " . substr($tutu[$jj], strpos($tutu[$jj], " : ") + 2, strlen($tutu[$jj]));
if (!$sousListe)
$tutu[$jj] = substr($total, 7, strlen($total)) . " :
\n" . $tutu[$jj];
$sousListe = true;
} else {
if ($sousListe)
$tutu[$jj] = "- " . substr($tutu[$jj], strpos($tutu[$jj], " : ") + 2, strlen($tutu[$jj])) . "
";
else
$tutu[$jj] = substr($tutu[$jj], 7, strlen($tutu[$jj]));
$sousListe = false;
}
}
$jj = count($tutu) - 1;
if ($sousListe)
$tutu[$jj] = " - " . substr($tutu[$jj], strpos($tutu[$jj], " : ") + 2, strlen($tutu[$jj])) . "
";
else
$tutu[$jj] = substr($tutu[$jj], 7, strlen($tutu[$jj]));
// for ($jj=0;$jj
\n";
$titi = fgets($f_index);
$eclats = explode(":", $titi);
}
fclose($f_index);
fclose($file);
} else {
/*********
** J'ai un lemme à chercher dans les dicos
************/
if (isset($_POST['lemme'])) {
// Si j'arrive ici par soumission d'un lemme, je dois tenir compte du choix "en colonnes".
if (isset($_POST['en_colonne']))
$_SESSION['en_colonne'] = true;
else
$_SESSION['en_colonne'] = false;
}
$aff_dicos = $dicos;
if ($dicos == "les trois dicos") {
$le_LSJ = true;
$le_Pape = true;
$le_Bailly = true;
} else {
$le_LSJ = (strpos($dicos, "LSJ") > 0);
$le_Pape = (strpos($dicos, "Pape") > 0);
$le_Bailly = (strpos($dicos, "Bailly") > 0);
}
$f_index = fopen("data/index_com.csv", "r");
if ($pos_ind == -1)// J'ai donc un lemme.
{
if (ord($lemme) < 128)
$lemme = latin2greek(strtolower($lemme));
else
$lemme = nettoie($lemme);
$pos_ind = cherche($lemme, 0, filesize("data/index_com.csv"));
}
fseek($f_index, $pos_ind);
$reponse = trim(fgets($f_index));
// J'ajoute un trim pour éliminer le \n qui termine la ligne
if ($pos_ind > 1000) {
fseek($f_index, $pos_ind - 1000);
$toto = fgets($f_index);
// Comme je suis n'importe où, je dois d'abord finir la ligne en cours
} else
fseek($f_index, 0);
$x = 0;
$y_LSJ = 0;
$y_Pape = 0;
$y_Bailly = 0;
$eclats = explode(':', $reponse);
// if (isset($_GET['pos_ind']))
$lemme = $eclats[0];
// $reponse contient la ligne de l'index correspondant à la demande
// $eclats[1] contient la position dans le LSJ de l'entrée demandée
// $eclats[3] contient celle dans le Pape.
/* if ($eclats[1] != '') {
$pos_lsj[0] = $eclats[1];
$len_lsj[$y_LSJ] = strlen($eclats[2]);
$y_LSJ += 1;
}
if ($eclats[3] != '') {
$pos_pape[0] = $eclats[3];
$len_pape[$y_Pape] = strlen($eclats[4]);
$y_Pape += 1;
}
if ($eclats[5] != '') {
$pos_bailly[$y_Bailly] = $eclats[5];
$len_bailly[$y_Bailly] = strlen($eclats[6]);
$y_Bailly += 1;
}
*/
$avant = -1;
$ici = 0;
while ((ftell($f_index) < $pos_ind + 1000) && !feof($f_index)) {
$a[$x] = ftell($f_index);
// L'array $a contient les positions des entrées dans l'index
$eclats = explode(':', trim(fgets($f_index)));
if ($eclats[2] != '')
$b[$x] = $eclats[2];
else if ($eclats[4] != '')
$b[$x] = $eclats[4];
else
$b[$x] = $eclats[6];
// L'array $b contient les entrées de l'index qui correspondent à la position donnée par $a
// if ($a[$x] == $pos_ind)
// $b[$x] = "➢" . $b[$x] . "";
// else if ($eclats[0] == $lemme) {
if ($eclats[0] == $lemme) {
$ici = $x;
if ($eclats[1] != '') {
$pos_lsj[$y_LSJ] = $eclats[1];
$len_lsj[$y_LSJ] = strlen($eclats[2]);
$y_LSJ += 1;
}
if ($eclats[3] != '') {
$pos_pape[$y_Pape] = $eclats[3];
$len_pape[$y_Pape] = strlen($eclats[4]);
$y_Pape += 1;
}
if ($eclats[5] != '') {
$pos_bailly[$y_Bailly] = $eclats[5];
$len_bailly[$y_Bailly] = strlen($eclats[6]);
$y_Bailly += 1;
}
} else if ($eclats[0] < $lemme)
$avant = $x;
$x = $x + 1;
}
fclose($f_index);
// Je prépare une ligne de titre avec, au centre, le ou les mots trouvés
// et, de part et d'autre, le mot d'avant et le mot d'après.
if ($ici == 0)
$ici = $avant + 1;
$lg_titre = "";
$b[$avant + 1] = "" . $b[$avant + 1] . "";
// Je sais maintenant combien d'articles de chaque dicos j'ai à ma disposition
$quelque_chose = ($y_LSJ != 0 && $le_LSJ) || ($y_Pape != 0 && $le_Pape) || ($y_Bailly != 0 && $le_Bailly);
// Si $quelque_chose, alors l'affichage ne sera pas vide.
if (!$quelque_chose) {
// L'affichage serait vide si je ne fais rien : je bascule donc sur les trois dicos.
$aff_dicos = "les trois dicos";
$le_LSJ = true;
$le_Pape = true;
$le_Bailly = true;
}
// Un include pour retrouver les noms des dicos indexés
include "data/index_com.inc";
if ($y_LSJ != 0 && $le_LSJ) {
// $f1 = fopen("data/LSJ-6.5.1.txt", "r");
// Juin 2017 : le LSJ_1940_Ph devient LSJ.6.4
$f1 = fopen("data/" . $LSJ_name, "r");
for ($i = 0; $i < $y_LSJ; $i++) {
fseek($f1, $pos_lsj[$i]);
$lsj = fgets($f1);
$lsj = substr_replace($lsj, "", $len_lsj[$i], 0);
$lsj = "" . $lsj;
$l_ii = [];
$l_ii[0] = 0;
if (stripos($lsj, " v. ") > 0)
$l_ii = liste_pos($lsj, " v. ", $l_ii);
if (stripos($lsj, " v. sub ") > 0)
$l_ii = liste_pos($lsj, " v. sub ", $l_ii);
if (stripos($lsj, "(v. ") > 0)
$l_ii = liste_pos($lsj, "(v. ", $l_ii);
if (stripos($lsj, " = ") > 0)
$l_ii = liste_pos($lsj, " = ", $l_ii);
if (stripos($lsj, ". for ") > 0)
$l_ii = liste_pos($lsj, ". for ", $l_ii);
// J'ai constitué une liste de tous les renvois possibles.
$iii = count($l_ii) - 1;
if ($iii > 0) {
sort($l_ii);
while ($iii > 0) {
$ii = $l_ii[$iii];
// Il y a probablement un renvoi.
if (ord(substr($lsj, $ii, 1)) > 127) {
// ça se confirme
$debut = $ii;
$max = strlen($lsj);
while ((ord(substr($lsj, $ii, 1)) > 127) && ($ii < $max))
$ii += 1;
$fin = $ii;
$renvoi_lsj = substr($lsj, $debut, $fin - $debut);
$lsj = substr_replace($lsj, "", $fin, 0);
//$lsj = substr_replace($lsj, "", $debut, 0);
$lsj = substr_replace($lsj, "", $debut, 0);
}
$iii = $iii - 1;
}
}
$lsj_tot .= $lsj . "
\n";
}
fclose($f1);
/* J'ai fait un fichier qui contient la liste des oeuvres utilisées dans le LSJ.
* Elles sont citées avec des abréviations standardisées (?).
* J'ai mis des ancres dans le fichiers data/Liste_Auteurs_LSJ.htm
* La liste de abréviations est dans data/Ref_LSJ.csv
*
* On pourrait ajouter un bouton "Lier les références du LSJ"
* dans le formulaire de consultation.
* Si le booléen $lier_ref reflète l'état du bouton,
* le bloc pourrait être soumis à un if (commenté pour l'instant)
*
*/
// if ($lier_ref) {
$file = fopen("data/Ref_LSJ.csv", "r");
$x_ref = 0;
while (!feof($file)) {
$ligne = fgets($file);
$eclats = explode(chr(9), $ligne);
$ref_avant[$x_ref] = $eclats[0];
$tooltip = str_replace("'", "'", $eclats[4]);
$ref_apres[$x_ref] = "" . $eclats[0] . "";
$ref_pendant[$x_ref] = "@" . $x_ref . "@";
$x_ref = $x_ref + 1;
}
fclose($file);
$lsj_tot = str_replace($ref_avant, $ref_pendant, $lsj_tot);
$lsj_tot = str_replace($ref_pendant, $ref_apres, $lsj_tot);
// }
// Fin du passage ajouté le 13 septembre 2014. Philippe.
// Jamais mis en ligne avant juin 2017. Ph.
}
if ($y_Pape != 0 && $le_Pape) {
// $f1 = fopen("data/Pape.3.1.txt", "r");
// Juin 2017 : Pape_Ph devient Pape.3
$f1 = fopen("data/" . $Pape_name, "r");
for ($i = 0; $i < $y_Pape; $i++) {
fseek($f1, $pos_pape[$i]);
$pape = fgets($f1);
$pape = substr_replace($pape, "", $len_pape[$i], 0);
$pape = "" . $pape;
$l_ii = "";
$l_ii[0] = 0;
if (strpos($pape, " = ") > 0)
$l_ii = liste_pos($pape, " = ", $l_ii);
// if (strpos($pape, " = ") > 0)
// $l_ii = liste_pos($pape, " = ", $l_ii);
if (stripos($pape, " s. ") > 0)
$l_ii = liste_pos($pape, " s. ", $l_ii);
if (stripos($pape, "(s. ") > 0)
$l_ii = liste_pos($pape, "(s. ", $l_ii);
if (stripos($pape, "(vgl. ") > 0)
$l_ii = liste_pos($pape, "(vgl. ", $l_ii);
if (stripos($pape, ". für ") > 0)
$l_ii = liste_pos($pape, ". für ", $l_ii);
// J'ai constitué une liste de tous les renvois possibles.
$iii = count($l_ii) - 1;
if ($iii > 0) {
sort($l_ii);
while ($iii > 0) {
$ii = $l_ii[$iii];
// Il y a probablement un renvoi.
if (substr($pape, $ii, 1) == " ")
$ii += 1;
if ((ord(substr($pape, $ii, 1)) > 127) || (substr($pape, $ii, 1) == "-")) {
// ça se confirme
$debut = $ii;
$max = strlen($pape);
while ((ord(substr($pape, $ii, 1)) > 127) && ($ii < $max))
$ii += 1;
$fin = $ii;
$renvoi_pape = str_replace("-", "", substr($pape, $debut, $fin - $debut));
$pape = substr_replace($pape, "", $fin, 0);
//$pape = substr_replace($pape, "", $debut, 0);
$pape = substr_replace($pape, "", $debut, 0);
}
$iii -= 1;
}
}
$pape_tot .= $pape . "
\n";
}
fclose($f1);
}
if ($y_Bailly != 0 && $le_Bailly) {
// $f1 = fopen("data/Bailly.Abr.5.1.txt", "r");
// Juin 2017 : le XMLBailly351 devient Bailly.Abr.4.3
$f1 = fopen("data/" . $Bailly_name, "r");
for ($i = 0; $i < $y_Bailly; $i++) {
fseek($f1, $pos_bailly[$i]);
$lsj = fgets($f1);
$lsj = substr_replace($lsj, "", $len_bailly[$i], 0);
$lsj = "" . $lsj;
$ii = 0;
// if (stripos($lsj, " c.") > 0)
// $l_ii = liste_pos($lsj, " c.", $l_ii);
// if (stripos($lsj, " v.") > 0)
// $l_ii = liste_pos($lsj, " v.", $l_ii);
// if (stripos($lsj, " p.") > 0)
// $l_ii = liste_pos($lsj, " p.", $l_ii);
// if (stripos($lsj, ">v. ") > 0)
// $l_ii = liste_pos($lsj, ">v. ", $l_ii);
// if (stripos($lsj, ">p. ") > 0)
// $l_ii = liste_pos($lsj, ">p. ", $l_ii);
// if (stripos($lsj, ">c. ") > 0)
// $l_ii = liste_pos($lsj, ">c. ", $l_ii);
// if (stripos($lsj, ">v. ") > 0)
// $l_ii = liste_pos($lsj, ">v. ", $l_ii);
// if (stripos($lsj, ">p. ") > 0)
// $l_ii = liste_pos($lsj, ">p. ", $l_ii);
// if (stripos($lsj, ">c. ") > 0)
// $l_ii = liste_pos($lsj, ">c. ", $l_ii);
$l_ii = "";
$l_ii[0] = 0;
if (stripos($lsj, " c.") > 0) $l_ii = liste_pos($lsj, " c.", $l_ii);
if (stripos($lsj, " v.") > 0) $l_ii = liste_pos($lsj, " v.", $l_ii);
if (stripos($lsj, " p.") > 0) $l_ii = liste_pos($lsj, " p.", $l_ii);
if (stripos($lsj, ">v.") > 0) $l_ii = liste_pos($lsj, ">v.", $l_ii);
if (stripos($lsj, ">p.") > 0) $l_ii = liste_pos($lsj, ">p.", $l_ii);
if (stripos($lsj, ">c.") > 0) $l_ii = liste_pos($lsj, ">c.", $l_ii);
// J'ai constitué une liste de tous les renvois possibles.
$iii = count($l_ii) - 1;
if ($iii > 0) {
sort($l_ii);
while ($iii > 0) {
$ii = $l_ii[$iii];
// Il y a probablement un renvoi.
// Le plus souvent, il commence par
if (substr($lsj, $ii, 5) == " ")
$ii = $ii + 5;
else
$ii = $ii + 1;
if (ord(substr($lsj, $ii, 1)) > 127) {
// ça se confirme
$debut = $ii;
$max = strlen($lsj);
while ((ord(substr($lsj, $ii, 1)) > 127) && ($ii < $max))
$ii += 1;
$fin = $ii;
$renvoi_lsj = substr($lsj, $debut, $fin - $debut);
$lsj = substr_replace($lsj, "", $fin, 0);
//$lsj = substr_replace($lsj, "", $debut, 0);
$lsj = substr_replace($lsj, "", $debut, 0);
}
$iii -= 1;
}
}
$bailly_tot .= $lsj . "
\n";
}
fclose($f1);
$bailly_tot = str_replace("\\n", "
\n", $bailly_tot);
// Un peu de mise en forme...
$bailly_tot = str_replace("\\n ", "
\n ", $bailly_tot);
$bailly_tot = str_replace("\\n", "\n", $bailly_tot);
}
}
/*********************************************
** Affichage **
*********************************************/
if ($consultation) {
if (isset($_POST["flexion"])) {
echo $tableau . "
\n";
} else {
// echo "j'ai trouvé : ".count($l_ii)."
";
echo $lg_titre;
echo "\n";
echo "
\n";
echo "
\n";
if ($le_LSJ) {
echo "
\n";
echo "
LSJ 1940
\n";
echo "
" . $lsj_tot . "
\n";
echo "
\n";
}
if ($le_Pape) {
echo "
\n";
echo "
Pape 1880
\n";
echo "
" . $pape_tot . "
\n";
echo "
\n";
}
if ($le_Bailly) {
echo "
\n";
echo "
Bailly abr. 1919
\n";
echo "
" . $bailly_tot . "
\n";
echo "
\n";
}
echo "
\n";
echo "
\n";
echo $lg_titre;
}
} else {
// Affichage du texte traité
echo "Aide à la lecture
\n";
for ($x = 0; $x < count($mots); $x++) {
//echo "" . $mots[$x] . " \n";
echo "";
echo str_replace(chr(13),"
", $mots[$x]) . " \n";
}
echo "Lemmatisation avec les formes du texte
\n";
for ($x = 0; $x < count($mots); $x++) {
echo "\n";
echo "" . str_replace($ponct, "", $mots[$x]) . " : \n";
if ($forme[$x] != "Non trouvé")
echo "
";
echo $forme[$x] . "
\n";
}
}
?>