IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

REPLACE avec certains caractères ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Points : 203
    Points
    203
    Par défaut REPLACE avec certains caractères ne marche pas
    Bonjour

    Je passe un site de ISO en UTF8
    Tout va bien mais la gestion des accents reste assez chaotique...

    J'ai fais un scripte en PHP qui permet de transformer les 'é' affiché en 'é', comme les 'ê' en 'ê', etc...
    Tout marche bien sauf pour une chose les "à" en "à" ne marchent pas, ils ne se transforment pas ?
    J'ai tout essayé sans aucun résultat, si vous avez une idée ?

    Voici mon script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    	// on cree la requete SQL 
    		$sql = "SELECT * from Tbl_page_pdf order by id_page"; 
    		// on envoie la requete 
    		$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    		// on boucle
    			 while($data = mysql_fetch_assoc($req)) 
    			 { 
     
     
    			// On écrit le requete 
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'é', 'é') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'ê', 'ê') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, '’', '\'') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'è', 'è') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'î', 'î') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'ç', 'ç') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'ô', 'ô') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'É', '€') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = 'UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, "Ã&nbsp;", "à") where id_page = '.$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'ù', 'û') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'û', 'û') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'ú', 'ù') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, '°', '°') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, '€', ' €') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, 'â', 'â') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, '«', '«') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = "UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, '»', '»') where id_page = ".$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = 'UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, "Å\"", "oe") where id_page = '.$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
    			$sqle = 'UPDATE Tbl_page_pdf set texte_fr = REPLACE(texte_fr, "â€\"", "") where id_page = '.$data['id_page'];
    			mysql_query($sqle) or die('Erreur SQL !'.$sqle.'<br>'.mysql_error());
     
     
     
    			$i ++;
     
    			 }
     
    			 echo " MAJ réalisée nb : $i";
    VrroOOOAAAAAPPPPPPPPPP !!!

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Bonsoir,

    je ne voudrai pas dire de bêtise mais &nbsp; est un espace insécable, qui ne fait pas parti de l'encodage du caractère, ce qui pourrai expliqué pourquoi ça ne fonctionne pas...


    Et d'un point de vu technique, pourquoi ne pas faire un utf8_encode sur le texte pour n'avoir qu'une seule requête ? (http://php.net/manual/fr/function.utf8-encode.php)

  3. #3
    Membre actif
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Points : 203
    Points
    203
    Par défaut
    Oui &nbsp; est un espace insécable.
    Mais je recherche à remplacer "Ã&nbsp;" par un à donc un texte "Ã&nbsp;" qui existe bien dans le texte de la page, comme les autres qui marchent très bien...

    Avec la fonction utf8_encode les choses comme 'é' ne changent pas en é...
    Du coup je fais un script qui met à jour une fois pour toute mes données...
    VrroOOOAAAAAPPPPPPPPPP !!!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta méthode n'est pas bonne quelque soit le cas :
    - les fonctions de décodage sont là pour faire les conversions et elles contiennent tous les caractères (alors que ton traitement maison par exemple n'a pas les majuscules).
    - faire une requête par caractère est catastrophique ... si vraiment tu voulais convertir manuellement, fait toutes les conversions en PHP puis seulement après fait la mise à jour.

    Concernant ton cas précis c'est difficile de t'orienter sans savoir vraiment dans quel cas tu te trouves.
    - si tes données sont correctement écrites dans la base (dans phpmyadmin tu vois les accents correctement écrits), il n'y a pas besoin de faire de conversion, il faut seulement changer l'encodage de la connexion.
    - si tes données étaient déjà mal écrites dans la base, effectivement il vaut mieux les réecrire. Moi personnellement je ferai un export de la table, une conversion dans une éditeur de texte et un ré-import.
    Alternativement il doit être réalisable de simplement faire une lecture des données via une connexion dans un encodage et leur réecriture tel quel, sans conversion, via une connexion dans l'autre encodage : les données en elle même ne sont pas mauvaises, elles sont simplement prise en compte avec un mauvais encodage donc il n'est pas nécessaire de les modifier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par Décibel Voir le message
    ...Je passe un site de ISO en UTF8...


  6. #6
    Membre actif
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Points : 203
    Points
    203
    Par défaut
    Merci Sabotage de ton message !
    Je pense que les données étaient mal écrites car là je suis réellement en UTF8, dans la connexion j'ai mysql_query("SET NAMES 'utf8'"); dans le htaccess du site AddDefaultCharset UTF-8 et tous les fichiers sont en codage "Unicode UTF8"...
    J'ai lancé mon script et tout va bien, les textes sont parfait !
    J'ai juste du repasser dans tous les textes pour gérer les "à", mais j'aimerais comprendre pourquoi ça ne marche pas pour le prochain site à basculer...
    VrroOOOAAAAAPPPPPPPPPP !!!

  7. #7
    Invité
    Invité(e)
    Par défaut
    mysql_ étant obsolète et bientôt supprimé (PHP7), il faudra aussi penser à passer en msqli_, ou mieux : PDO.


  8. #8
    Membre actif
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Points : 203
    Points
    203
    Par défaut
    C'est cool, plein de réponses qui ne me servent à rien...
    J'ai vu le lien http://j-willette.developpez.com/tut...-site-en-utf8/ et j'ai fait tout ce qui est écrit...
    Mais mes données étaient mal écrites et donc j'avais des problèmes avec des accents
    J'ai mis en place mon script qui marche très bien au passage ( !!! ) mais pas pour le "Ã&nbsp;" en "à", alors si quelqu'un à une idée, ce serait cool !
    Et oui je sais que mysqli est obsolète, merci, et quoi d'autre ?
    VrroOOOAAAAAPPPPPPPPPP !!!

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Décibel Voir le message
    C'est cool, plein de réponses qui ne me servent à rien...
    De rien.

    Oui, j'ai une idée : aller voir ailleurs...

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    mais j'aimerais comprendre pourquoi ça ne marche pas pour le prochain site à basculer...
    J'espère que tu n'as pas des données mal écrites dans les bases de tous tes sites.
    Est-ce que tu vois le "&nbsp;" dans la base de données ?
    Si oui cela signifie que tu as non seulement fait des insertions avec le mauvais encodage mais en plus avec transformation en entités HTML.

    Bref chez moi ce remplacement fonctionnement avec Mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT REPLACE('xxxÃ&nbspxxx', 'Ã&nbsp', 'à')
    // xxxàxxx
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre actif
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Points : 203
    Points
    203
    Par défaut
    Merci Sabotage !
    Je verrais sur mon prochain site si le problème revient et comment le gérer...
    VrroOOOAAAAAPPPPPPPPPP !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête par adresse, pas de résultat avec certains caractères accentués
    Par sylvaingeo dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 18/09/2012, 12h37
  2. TabSheet avec enabled à false ne marche pas?
    Par codial dans le forum Delphi
    Réponses: 8
    Dernier message: 06/03/2007, 12h46
  3. Réponses: 4
    Dernier message: 16/02/2007, 14h51
  4. Problème avec certains caractéres dans variable
    Par Off$ide dans le forum Langage
    Réponses: 14
    Dernier message: 13/12/2005, 10h46
  5. aperçu d image avec input type file marche pas dans ffx
    Par siddh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo