Pour ceux que ça interesse, j’ai enfin résolu TOUS mes problèmes d’indexation pour le futur moteur de recherche que je suis en train d’effectuer pour mon stage!! voici mon code
<html?gt;
<head>
<title>Indexation</title>
</head>
<body>
<form action="indexation.php" method="post" enctype="multipart/form-data">
<p>Fichier a indexer : </p>
<input type="file" size=50 name="fichier" accept="text/*"><br>
<input type="hidden" name="envoie" value="1">
<input type="submit" value="envoyer">
</form>
<?
set_time_limit(60); //augmentation du temps maximal d\'exécution (optionnel)
require("connect.php");
if((isset($_POST['envoie']))&&($_POST['envoie']=='1'))
{
if($CONNEXION)
{
// indexation contenu
function noaccents ($chaine) //fonction qui remplace les lettres à accent par celles sans!!!
{
$a = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ";
$b = "aaaaaaooooooeeeeciiiiuuuuyn";
return (strtr($chaine, $a, $b));//remplace les caractère d"une chaine par une autre
}
$url = $_FILES['fichier']['name'];
$contenu =implode('', file($url));//recupere tt le contenu
$search = array('#(\<h[1-6]\>(.+)\<\/h[1-6]\>)+#', '#(\<title\>(.+)\<\/title\>)+#','#\\r#','#\\n#');
$replace = array('','',' ','');
$contenu1=preg_replace($search,$replace,$contenu);//remplace les balises h1-h6 et titre par rien!
$contenu1 = strip_tags($contenu1);//supprime les balises html
$contenu1 = noaccents($contenu1);//ôte les accents
eregi("<title>(.*)</title>",$contenu,$regs);//récupère le titre $regs[1]
if (preg_match_all('#(\<h[1-6]\>(.+)\<\/h[1-6]\>)+#', $contenu, $reg2))//récupère le contenu de h1 à h6
{
$count=count($reg2[0]);
$h2="";
for($i=0;$i<$count;$i++)
{
$h2=$h2." ".$reg2[0][$i].".";
$h2=strtolower(strip_tags($h2));
}
}
$tags = get_meta_tags($url);//récupère les meta tags du fichier passé en paramètre
$tag_keyword = $tags['keywords'];//recupère le contenu de <meta name=keywords>...
echo $contenu1;
//gestion dans la base de donnée du contenu
$req="INSERT INTO texte (url, contenu,titre,h1h6,metakeywords) VALUES ( '".$url."','".mysql_real_escape_string($contenu1)."','".mysql_real_escape_string($regs[1])."','".mysql_real_escape_string($h2)."','".mysql_real_escape_string($tag_keyword)."')";//range l'url, le contenu sans balise, le titre et les mots clés dans la base de donnée
$result=mysql_query($req,$CONNEXION);
if($result)//vérifie si la requête a été éffectué et affiche un message
{
echo "<br>enregistrement pris en compte";
}
else
{
echo "<br>recommencer, erreur dans l' enregistrement";
}
function delimiteurs($chaine)
{
$a = ".!?,:;« »'`(){}[]%\/ ©-";
$b = " ";
return (strtr($chaine, $a, $b));//remplace les caractère d"une chaine par une autre
}
//indexation mot par mot
$contenu1= delimiteurs($contenu1);
$contenu1 = strtolower($contenu1);
$ChaineVide="";
$sql="SELECT mot_vide FROM mots_vide";
$curseur = mysql_query($sql);
$motVide = mysql_fetch_array($curseur);
while($motVide)
{
$ChaineVide.=" ".$motVide[0];
$motVide=mysql_fetch_array($curseur);
}
$les_mots = explode(" ",$contenu1);
sort($les_mots); //les mots du contenu par ordre alphabétique
$nb_mots = count($les_mots);
$poids=1;
for ($i=0;$i<$nb_mots;$i++)
{
$pos = strpos($ChaineVide, $les_mots[$i]);
if(($pos === false) && (strlen($les_mots[$i])>2))
{
if ($dernier==$les_mots[$i])
{
$poids++;
}
else
{
$mots_tries[$dernier]=$poids;
//echo "<br>".$dernier." ".$poids;
$poids=1;
$dernier=$les_mots[$i];
}
}
}
$regs[1] = strtolower($regs[1]);
$regs[1]= delimiteurs($regs[1]);
$regs[1] = noaccents($regs[1]);
$titre = explode(" ",$regs[1]);
$nb_titre = count($titre);
for ($i=0;$i<$nb_titre;$i++)
{
$mottitre = $titre[$i];
$pos = strpos($ChaineVide, $mottitre);
if(($pos === false) && (strlen($mottitre)>2))
{
if (isset($mots_tries[$mottitre]))
{
$mots_tries[$mottitre]+=10;
}
else
{
$mots_tries[$mottitre]=10;
}
}
}
$h2 = strtolower($h2);
$h2 = delimiteurs($h2);
$h2 = noaccents($h2);
$soustitre = explode(" ",$h2);
$nb_soustitre = count($soustitre);
for ($i=0;$i<$nb_soustitre;$i++)
{
$motsoustitre = $soustitre[$i];
$pos = strpos($ChaineVide, $motsoustitre);
if(($pos === false) && (strlen($motsoustitre)>2))
{
if (isset($mots_tries[$motsoustitre]))
{
$mots_tries[$motsoustitre]+=5;
}
else
{
$mots_tries[$motsoustitre]=5;
}
}
}
$tag_keyword = strtolower($tag_keyword);
$tag_keyword = delimiteurs($tag_keyword);
$tag_keyword = noaccents($tag_keyword);
$keyword = explode(" ",$tag_keyword);
$nb_keyword = count($keyword);
for ($i=0;$i<$nb_keyword;$i++)
{
$motkeyword = $keyword[$i];
$pos = strpos($ChaineVide, $motkeyword);
if(($pos === false) && (strlen($motkeyword)>2))
{
if (isset($mots_tries[$motkeyword]))
{
$mots_tries[$motkeyword]+=2;
}
else
{
$mots_tries[$motkeyword]=2;
}
}
}
$req="SELECT MAX(ID) FROM texte";
$ligne=mysql_query($req);
$MAX_CONTENU= mysql_fetch_array($ligne);
for ($i=0;$i<count($mots_tries);$i++)
{
$value=current($mots_tries);
$key=key($mots_tries);
$sql="INSERT INTO mot (ID_TEXTE,Libelle, Poids) VALUES ('".$MAX_CONTENU[0]."','".$key."','".$value."')";
$result=mysql_query($sql,$CONNEXION);
if($result)//vérifie si la requête a été éffectué et affiche un message
{
echo "<br>enregistrement pris en compte";
}
else
{
echo "<br>recommencer, erreur dans l' enregistrement";
}
next($mots_tries);
}
}
}
mysql_close($CONNEXION);
?>
</body>
</html?gt;
J’avoue il est long, mais il est simple, et pour le moment, il ne présente aucune faille.si question, je suis à disposition