Aller au contenu

Bug : fonction qui transforme en lien des mots


Toutankharton

Sujets conseillés

Je voudrais que dans mes paragraphes, si jamais un nom propre étant dans la base de donnée s'affiche, celui ci soit transformé en lien...

J'ai crée une petite fonction qui semble tourner à l'infini. En tout cas elle ne marche pas et s'affiche :

Fatal error: Maximum execution time of 30 seconds exceeded....

au lieu de mon texte.

La voici, si vous pouvez m'aider :

function linkage($str)
{
$tok = strtok($str," \n\t");
while ($tok)
 {
   if(strlen($tok) >= 4 && preg_match("![A-Z]!",$tok[0]))
   {
 $sql_tok = "SELECT id,nom FROM noms_propres WHERE nom LIKE '%" .$tok. "%'";
 $req_tok = mysql_query($sql_tok);
 mysql_num_rows($req_tok);
 if(mysql_num_rows($req_tok) < 0)
   {
   $str = str_replace($tok, "<a href=''>$tok</a>",$str);
   return $str;
   }
 }
 }
$tok = strtok(" \n\t");
}

Lien vers le commentaire
Partager sur d’autres sites

La ligne "$tok = strtok(" \n\t");" doit être placée juste avant la fin de la boucle while, et pas juste après car sinon la boucle analyse toujours le même segment et continue à l'infini.

Enfin, de mon point de vue ça sera pas un script très rapide (du point de vue d'un seul affichage ça ne se voit pas, mais si des dizaines de visiteurs passent, le serveur pourrait en souffrir) vu que le nombre de requête sql sera proportionnel (ou presque ...) au nombre de mot dans le paragraphe (c'est à dire , beaucoup !).

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...