[PHP/SQL] Problème d'espace dans script de traduction ...

Problème d'espace dans script de traduction ... [PHP/SQL] - PHP - Programmation

Marsh Posté le 12-05-2005 à 19:30:29    

Bonjour à tous !  
J'ai un petit souci : je teste un script de traduction ( ne vous inquiétez pas, pas anglais/français des trucs comme ça , hin, plus soft avec quelques mots )
Donc j'ai mes mots dans ma base de données, a savoir :  
champ mot et champ mottraduit
Donc dans ma BDD j'ai quelques mots et les mottraduits correspondants.  
 
Bref, je voudrais que lorsqu'un visiteur tape un texte dans une textarea, les mots tapés, s'ils sont trouvés dans la BDD, soient remplacés par les "mottraduits"
 
J'ai à peu près réussi avec ce script :  
 

Code :
  1. if ($_POST['traduire'] && $_POST['MOT'])
  2. {
  3. $requete = "SELECT mot, mottraduit FROM mabase ORDER BY -mot";
  4. $result = mysql_query($requete, $idConnexion);
  5. if (!$result)
  6. {
  7.  die ("<div align=\"center\">Erreur lors de l'envoi. Veuillez réitérer.</div>" );
  8. }
  9. else
  10. {
  11. $traduc = $_POST['MOT'];
  12. $traduc = strtr($traduc, ' ',' '.' ');
  13.    
  14.       while ($enreg = mysql_fetch_array($result, MYSQL_BOTH))
  15.       {
  16.       $mots[' '.$enreg['mot'].' '] = ' '.$enreg['mottraduit'].' ';
  17.       }
  18. $traduc = strtr(' '.$traduc.' ', $mots);
  19. $traduc = stripSlashes($traduc);
  20. $traduc = substr($traduc, 1, strlen($traduc)-1);   
  21.   }
  22. }


Avec le formulaire qui marche bien entendu..
Voilà, donc comme vous pouvez le remarquer, y a un honteux bidouillage avec les espaces, notamment :  
 

Code :
  1. $traduc = strtr($traduc, ' ',' '.' ');


 
Qui n'a pas l'air de marcher .. Pour l'instant, ce script traduit un mot sur deux.  
Quelqu'un peut-il me guider ? Merci !


---------------
Hello hello super jello
Reply

Marsh Posté le 12-05-2005 à 19:30:29   

Reply

Marsh Posté le 13-05-2005 à 11:57:06    

normal, regarde la doc de strtr

Citation :

Si from et to sont de tailles différentes, les caractères en trop dans l'un ou l'autre seront ignorés.


donc ta ligne 12 ne sert à rien...
 
de plus je te conseille d'utiliser str_replace qui sera 10 fois plus rapide pour ce que tu veux faire

Reply

Marsh Posté le 13-05-2005 à 18:21:04    

Arf, tu aurais une idée pour remplacer la ligne 12 ?
Pour le str_replace pas de problème ;)


---------------
Hello hello super jello
Reply

Marsh Posté le 13-05-2005 à 20:19:35    

J'ai trouvé ça a l'air de fonctionner, merci :)
 
Mais par contre ca marche pas si le mot a traduire est un mot composé ^^ :(


---------------
Hello hello super jello
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed