Aller au contenu

Bug : fonction qui transforme en lien des mots


Sujets conseillés

Posté

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");
}

Posté

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 !).

Veuillez vous connecter pour commenter

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



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