Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
927 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Remplacer une chaine de charactères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Remplacer une chaine de charactères

n°1788975
hellfire_l​z
Posté le 19-09-2008 à 00:35:10  profilanswer
 

Bonjour à tous,
 
Je cherche à remplacer dans une variable donnée une chaine de charactères par une autre.
 
Jusque là facile, il suffit d'utiliser la fonction str_replace me direz vous, oui, mais dans le cas suivant ou $message provient en fait d'un fichier xml encodé en iso-8859 ça marche pas :
 
<?php
$message = "le ciel est bleu mais je vois des éclairs au loin";
$strTmp = str_replace("des éclairs au loin", "", $message);
echo $strTmp;
?>
 
Comment je dois faire pour qu'il me vire convenablement le é?
 
J'ai essayé avec chr(233) à la place de é, j'ai essayé avec utf8_encode etc, mais je dois mal m'y prendre, please help ! :)


Message édité par hellfire_lz le 19-09-2008 à 00:35:25
mood
Publicité
Posté le 19-09-2008 à 00:35:10  profilanswer
 

n°1788981
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 19-09-2008 à 01:28:55  profilanswer
 

Ton é est sous quelle forme ? entité HTML ? si tu fais un html_entity_decode ? ça te virera tous les &*eacute;


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1788989
hellfire_l​z
Posté le 19-09-2008 à 07:58:03  profilanswer
 

mmh quand je fais un echo de la variable j'ai bien un é à l'écran et quand j'injecte les variables dans ma base MySQL j'ai bien des é également...
 
Pourtant le str_replace ne veut rien savoir, si je découpe la chaine de caratère en 2 (juste avant et après le é) j'arrive à tout remplacer (sauf le é), si j'inclus le é dans la chaine de caractère à remplacer ça marche plus du tout :/

n°1789016
FlorentG
Unité de Masse
Posté le 19-09-2008 à 09:50:51  profilanswer
 

Alors c'est l'encoding du fichier PHP qui n'est pas bon :)

n°1789160
hellfire_l​z
Posté le 19-09-2008 à 11:35:40  profilanswer
 

Je bricole ça comment? :)

n°1789167
FlorentG
Unité de Masse
Posté le 19-09-2008 à 11:37:16  profilanswer
 

Dans ton éditeur, vérifie quel encoding est utiliser pour sauvegarder les .php

n°1789540
hellfire_l​z
Posté le 19-09-2008 à 19:07:37  profilanswer
 

yes! c'est ça, merci beaucoup :)

n°1789573
hellfire_l​z
Posté le 19-09-2008 à 19:55:04  profilanswer
 

Question subsidiaire, le ™ pose soucis cette fois :D
 
tous les caractères spéciaux passent mais ce fichu ™ veut pas...
 
J'ai lu des trucs comme quoi c'est parce que ce caractère existe pas en ISO-8859, mais il se trouve bien dans mon xml d'origine qui est encodé en ISO-8859 justement...
 
des idées pour arriver à le remplacer?

n°1789610
hellfire_l​z
Posté le 19-09-2008 à 21:50:36  profilanswer
 

bon j'ai trouvé... au lieu de mettre remplacer "™" par "" j'ai mis le caractère crado que j'avais en résultat (™ pour ne pas le citer) et je l'ai remplacé par "" et ça ça marche :lol:

n°1789657
ddsjm
Posté le 20-09-2008 à 00:29:28  profilanswer
 

Bonsoir,
 
J'ai exactement le même problème sauf que ma chaîne de caractère provient d'une base de données MYSQL. Le nom est bien stocké avec des accents dans la base et il apparaît également à l'écran avec ces accents.
Voila ma partie de code qui est censée supprimer tous mes accents :

Code :
  1. for ($i=1;$i<=2;$i=$i+1){
  2. $chaine=$conv[$i];
  3. $conv[$i]=utf8_encode($conv[$i]);
  4. $chaine=strtolower($chaine);
  5.    
  6.     $accents = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", "/ù/", "/ô/" );
  7.     $sans = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o" );
  8.    
  9.     $chaine = preg_replace($accents, $sans,$chaine);   
  10.    
  11.    
  12.     $entre = array(' ', '?', '!', '.', ',', ':', "'", '&', '(', ')', '"','/');
  13.     $sortie = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-','-');
  14.     $chaine = str_replace($entre, $sortie, $chaine);
  15.    
  16.    
  17.     $modifchaine=true;
  18.     while($modifchaine==true)
  19.     {
  20.         $modifchaine=false;
  21.        
  22.         if(ereg('--',$chaine))
  23.         {
  24.             $chaine = str_replace('--','-',$chaine);
  25.             $modifchaine=true;       
  26.         }
  27.     }
  28. $conv[$i] = $chaine;
  29. }


J'ai essayé d'insérer la fonction utf8_encode() pour être dans le bon format, mais cela ne marche pas et là, je sèche.
Auriez-vous une idée d'où le problème provient?
Merci d'avance de vos réponses, JM


---------------
Mon vieux feedback :)
mood
Publicité
Posté le 20-09-2008 à 00:29:28  profilanswer
 

n°1789666
ddsjm
Posté le 20-09-2008 à 08:05:22  profilanswer
 

La nuit porte conseil.... :)
 

Code :
  1. $chaine=$conv[$i];
  2. $chaine=utf8_encode($chaine);
  3. $chaine=strtolower($chaine);


 
J'initialisais la variable à traiter et ensuite j'appliquais la fonction utf8_encode sur la mauvaise variable...
Comme ca ça marche


---------------
Mon vieux feedback :)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Remplacer une chaine de charactères

 

Sujets relatifs
gif apparait/remplacer en js ou css lorsque souris pointe lienSQL Server concatener champ + chaine IMPOSSIBLE
Remplacer une DLL (.net) au runtime par une nouvelle versionChaîne de caractères et ...lire la suite
[VBA] concaténer une chaîne de caractère dans une dateextraction d'une chaine dans un tableau
Comment faire pour transformer une variable en chaine UNICODE[resolu] Chaine de charactéres
Remplacement d'un caractère par un autre dans une chaine 
Plus de sujets relatifs à : Remplacer une chaine de charactères


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR