Version complète: sur le forum Webmaster Hub : Bug : fonction qui transforme en lien des mots
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Toutankharton
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 :

CODE
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");
    }
Boo2M0rs0
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 !).
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.