Problème suppression accents [RESOLU]

Problème suppression accents [RESOLU] - PHP - Programmation

Marsh Posté le 21-12-2009 à 16:57:40    

Bonsoir  :)  
 
J'ai un problème assez pénible. Pour les besoins de ma galerie photo que je développe j'aimerai faire en sorte d'enlever les accents dans les noms de la galerie.
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>   
  4.     <title>Test</title>
  5.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6.     <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
  7. </head>
  8. <body>
  9. <form action="index.php" method="post">
  10.     Nom galerie:<input type="text" name="nom"/>
  11.     <input type="submit" value="Envoyer"/>
  12. </form>
  13. <?php
  14. if(isset($_POST) && !empty($_POST['nom']))
  15.     {
  16.     extract($_POST);
  17.    
  18.     $toto = strtr($nom,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
  19.    
  20.     echo $toto;
  21.     }
  22. ?>
  23. </body>
  24. </html>


Normalement si je tape le mot pépé, ça devrait me sortir pepe. Mais là quand je tape pépé ça me sort pYopYo  [:transparency]  
 
Je pige pas trop, si quelqu'un peut éclairer ma lanterne, merci   :jap:


Message édité par Profil supprimé le 23-12-2009 à 09:34:23
Reply

Marsh Posté le 21-12-2009 à 16:57:40   

Reply

Marsh Posté le 21-12-2009 à 17:04:28    

fais une recherche sur le forum, c'est un topic qui tombe 2/3 fois par mois

Reply

Marsh Posté le 21-12-2009 à 17:24:32    

J'ai déjà regardé les autres mais c'est pas pour autant que j'ai résolu mon problème  [:jean-guitou]

Reply

Marsh Posté le 21-12-2009 à 17:32:39    

ta mal regardé, meme dans la page n°1 du thread php, y'as le meme type de problème et en plus avec des reponses

Reply

Marsh Posté le 21-12-2009 à 18:18:07    

Ptète que les réponses ne m'ont pas aidés et que c'est pour ça que je post ici  [:prodigy]

Reply

Marsh Posté le 22-12-2009 à 08:43:12    

je mettrais pas mon slip en gage mais ca ressemble à une conversion ISO -> UTF-8 le passage de é sur 2 caractères.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 22-12-2009 à 20:24:09    

Pourtant j'enregistre tout en utf-8 sans bom et l'encodage de la page est en utf-8  [:transparency]

Reply

Marsh Posté le 22-12-2009 à 23:07:59    

Tu peux faire un écho juste avant de passer ton message par le strtr() ?
 
 
----Hors-sujet----
 
Tiens, c'est marrant cette fonction extract(), je connaissais pas. C'est pas un poil dangereux, à l'instar des register_globals & cie ?
 
N'importe qui peut affecter la variable de son choix en validant un formulaire bidon avec des parametres POST supplémentaires...
 
edit : bon ok ya une gestion assez poussée des collisions au niveau des flags, mais bon...

Message cité 1 fois
Message édité par Pascal le nain le 22-12-2009 à 23:10:46
Reply

Marsh Posté le 22-12-2009 à 23:33:40    

En fait il faut un utf_decode($nom) au lieu de $nom.
 
http://php.net/manual/fr/function.strtr.php

Citation :


 Sidney Ricardo
05-Sep-2008 06:54
This work fine to me:
 
<?php
function normaliza ($string){
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ
ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ';
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuy
bsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
    $string = utf8_decode($string);    
    $string = strtr($string, utf8_decode($a), $b);
    $string = strtolower($string);
    return utf8_encode($string);
}
?>


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 22-12-2009 à 23:36:41    

Pascal le nain a écrit :

Tu peux faire un écho juste avant de passer ton message par le strtr() ?
 
 
----Hors-sujet----
 
Tiens, c'est marrant cette fonction extract(), je connaissais pas. C'est pas un poil dangereux, à l'instar des register_globals & cie ?
 
N'importe qui peut affecter la variable de son choix en validant un formulaire bidon avec des parametres POST supplémentaires...
 
edit : bon ok ya une gestion assez poussée des collisions au niveau des flags, mais bon...


moi non plus j'avais plus ou moins fait la mienne à la mano en python et php  [:bentley]  Le manque d'expérience en php, j'imagine ...


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 22-12-2009 à 23:36:41   

Reply

Marsh Posté le 23-12-2009 à 09:33:48    

Merci pour vos réponses mais comme un con j'avais oublié que j'avais désactivé js et du coup impossible de poster  [:tinostar]  
 
Alors dans l'ordre.
 
@Pascal le nain : Quand je fais un echo de $nom avant le passage par strtr() ça donne ce que j'ai tapé. Ex: pépé => pépé
 
Pour ton commentaire sur la fonction extract(), je sais pas si c'est dangereux, je ne connais pas encore les register_globals  [:cupra]  J'vais essayer de me renseigner  ;)  
 
@philippe06 : En mettant utf8_decode ça marche impec. En revanche je comprends pas trop pourquoi je dois utiliser cette fonction puisque je précise dans le charset que j'utilise l'utf-8, et qu'en plus j'enregistre mon document en utf-8 sans BOM  :??:  
 
Néanmoins merci à vous deux  :jap:
 
Edit: Après une recherche sur php.net sur les register_globals je tombe là-dessus:

Citation :

Cette fonctionnalité est OBSOLETE depuis PHP 5.3.0 et a étéSUPPRIMEE depuis PHP 6.0.0. Nous vous encourageons vivementà ne plus l'utiliser.
 


 [:tinostar]  [:tinostar]

Message cité 1 fois
Message édité par Profil supprimé le 23-12-2009 à 09:42:13
Reply

Marsh Posté le 23-12-2009 à 10:33:36    

PHP6 n'est pas encore sorti. Tous les serveurs sont encore en 5.3.0 ou inférieur.
Le register_globals est désactivé par défaut dans une grosse majorité, mais attention quand même.  
Tu utilises la fonction extract() qui n'a rien à voir avec les register_globals mais présente les mêmes dangers si tu n'ajoutes aucun flags.
Un peu de doc : http://php.net/manual/fr/function.extract.php
Lis bien l'avertissement sur les dangers de cette fonction.
Tu peux très bien t'en passer et faire un code safe...  ;)


Message édité par Pascal le nain le 23-12-2009 à 10:36:09
Reply

Marsh Posté le 23-12-2009 à 10:39:14    


 
 
c'est parce que les fontion str ne fonctionne qu'en ANSI, si tu faire nativement avec de l'utf-8 faut utilisé mb_string

Reply

Sujets relatifs:

Leave a Replay

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